ArrayList<File> vuhod = new ArrayList<>();
//Коллекция vuhod заполнена файлами
File res1 = new File("D:\\allFilesContent.txt");
//Файл res1 (который точно существует) для записи того, что мы считаем из каждого файла vuhod
BufferedWriter writer = new BufferedWriter(new FileWriter(res1));
for (int i = 0; i < vuhod.size(); i++)
{
BufferedReader reader = new BufferedReader(new FileReader(vuhod.get(i)));
while (reader.ready())
{
writer.write(reader.readLine());
}
if (i == vuhod.size() - 1) {
} else {
writer.write('\r');
writer.write('\n');
}
Почему не заполняется файл, и что значат строки writer.write('\r');
и writer.write('\n');
?
Запись в файл не идёт, так как вы не вызываете метод flush
у writer
.
BufferedWriter
пишет данные в свой буфер (размер по умолчанию которого равен 8192
символам) и в выходной поток (FileWriter
) отправляет данные из буфера только при его заполнении или при вызове flush()
или close()
.
Также стоит закрывать за собой потоки чтения и записи. Для это удобно использовать конструкцию try-with-resources. Вызов метода close
у BufferedWriter
, кстати, приводит к отправке данных из буфера в выходной поток, так что в этом случае вызывать метод flush
вручную не придётся.
В итоге код выглядит так:
List<File> vuhod = Arrays.asList(new File("in1.txt"), new File("in2.txt"));
File res1 = new File("out.txt");
try (BufferedWriter writer = new BufferedWriter(new FileWriter(res1)))
{
for (int i = 0; i < vuhod.size(); i++)
{
try (BufferedReader reader = new BufferedReader(new FileReader(vuhod.get(i))))
{
while (reader.ready())
{
writer.write(reader.readLine());
}
if (i < vuhod.size() - 1)
{
writer.write('\r');
writer.write('\n');
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
у меня работает так:
public static void main(String[] args) throws IOException {
String path = "E:\\MyProjects\\StackO\\questions\\634328";
List<File> files = new ArrayList<>();
files.add(new File(path + "\\1.txt")) ;
files.add(new File(path + "\\2.txt")) ;
files.add(new File(path + "\\3.txt")) ;
files.add(new File(path + "\\4.txt")) ;
BufferedWriter writer = new BufferedWriter(new FileWriter(path + "\\ConcatFile.txt"));
for(File file: files){
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
while ((line=reader.readLine()) != null){
writer.write(line);
}
reader.close();
}
writer.close();
}
Это если очень уж надо на чистом io
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Приветствую! Ситуация такая - есть БД Оракл, в нем таблица Worker, в ней фото рабочих в формате BLOBНеофходимо отобразить в Vaadin Grid вместе с остальными...
Есть три страницы наследованные от Fragment
Мне необходимо взаимодействовать с REST сервисом, который отдает ответы в XMLСтруктура XML-документа такая:
Сделал векторную картинку с помощью элементов htmlНо почему то, когда я меняю высоту окна, она странно реагирует и всё сжимается, хотя должно...