Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2018, 22:41   #1
Алексей117
Новичок
Джуниор
 
Регистрация: 17.02.2018
Сообщений: 2
Вопрос Написать на java программу, которая находит все текстовые файлы, отсортировать их по имени и склеить содержимое в один текстовый файл.

Добрый день,решаю задачу :
Имеется корневая папка. В этой папке могут находиться текстовые файлы, а также другие папки. В других папках также могут находится текстовые файлы и папки (уровень вложенности может оказаться любым).
Написать на 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
И дальше завис,прошу помощи,подскажите пожалуйста как можно реализовать
Спасибо)))
Алексей117 вне форума Ответить с цитированием
Старый 18.02.2018, 04:42   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Что приказываете записать - то и пишет: три символа
Black Fregat вне форума Ответить с цитированием
Старый 18.02.2018, 12:05   #3
Алексей117
Новичок
Джуниор
 
Регистрация: 17.02.2018
Сообщений: 2
По умолчанию

Подскажите пожалуйста то есть мне нужно передать вот так?
writer.append((char)content);
Алексей117 вне форума Ответить с цитированием
Старый 18.02.2018, 15:33   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Вы ведь сначала читаете все исходные файлы, потом открываете выходной и один раз записываете в него самый последний content
А надо открыть файл в самом начале и писать content по мере чтения
Black Fregat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файлы: В файле f записаны целые числа. Написать программу, которая в файл g записывает четные числа, а файл h - нечетны Гарри Паскаль, Turbo Pascal, PascalABC.NET 1 12.06.2015 00:26
написать программу, которая находит 20 целых решений уравнения x^2+y^2=z^2 (x,y,z<>0) katya111 Паскаль, Turbo Pascal, PascalABC.NET 0 18.05.2011 15:43
Написать программу которая создаэт текстовый файл c данними SashOK1991 Паскаль, Turbo Pascal, PascalABC.NET 0 06.06.2010 15:45
Написать программу которая создаэт текстовый файл даных. SashOK1991 Помощь студентам 1 02.06.2010 18:45
Написать программу которая создаэт текстовый файл даных. SashOK1991 Паскаль, Turbo Pascal, PascalABC.NET 2 31.05.2010 23:48