Нужна помощь

 
 
 
Сообщения:2
Добрый день,решаю задачу :
Имеется корневая папка. В этой папке могут находиться текстовые файлы, а также другие папки. В других папках также могут находится текстовые файлы и папки (уровень вложенности может оказаться любым).
Написать на java программу, которая находит все текстовые файлы, отсортировать их по имени и склеить содержимое в один текстовый файл.

Написал класс для поиска текстовых файлов

iimport java.io.*;
import java.util.*;


public class Main1 {
private static ArrayList<File> listWithFileNames = new ArrayList<>();
public static int content;

public static void main(String[] args) throws IOException {
getListFiles("C:\\backet");
for (File fil : listWithFileNames) {
String res = fil.getName();
if(res.contains(".txt")) {
try(FileReader reader = new FileReader(fil)) {
// читаем посимвольно
while((content=reader.read())!=-1){
//System.out.print((char)content);
}
} catch(IOException ex){
System.out.println(ex.getMessage());
}
// System.out.println(fil.getName());
}
}
//Записываем в файл
try(FileWriter writer = new FileWriter("C:\\backet\\global.txt", false))
{
writer.write((char)content);
// запись по символам
writer.append('\n');
writer.append('E');

writer.flush();
writer.close();
System.out.println("Запись прошла успешно");
}
catch(IOException ex){

System.out.println(ex.getMessage());
}
}
public static void getListFiles(String str) {
File f = new File(str);
for (File s : f.listFiles()) {
if (s.isFile()) {
listWithFileNames.add(s);
} else if (s.isDirectory()) {
getListFiles(s.getAbsolutePath());
}
}
}
}

Не работает запись в файл
Не пойму как отсортировать ArrayList<File> listWithFileNames
И дальше завис,прошу помощи,подскажите пожалуйста как можно реализовать
Спасибо)))
Изменен:16 фев 2018 20:26
 
 
Сообщения:11
Алгоритм рекурсивного получения списка файлов из директории, использующий Stream API, если вдруг поможет.
import java.io.File;
import java.util.List;
import static java.util.Arrays.stream;
import static java.util.Comparator.comparing;
import static java.util.stream.Collectors.toList;

    public static void main(String[] args) {
        File root = new File("C://директория");
        List<File> files = listFiles(root)
                .sorted(comparing(File::getName))
                .collect(toList());
    }

    static Stream<File> listFiles(File root) {
        return Arrays.stream(root.listFiles())
                .flatMap(file -> file.isDirectory() ? listFiles(file) : Stream.of(file));
    }
Изменен:20 фев 2018 11:26
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет