package com.javarush.task.task18.task1819;
/*
Объединение файлов
*/
import java.io.*;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file1 = reader.readLine();
String file2 = reader.readLine();
FileInputStream inputStream1 = new FileInputStream(file1);
FileInputStream inputStream2 = new FileInputStream(file2);
reader.close();
byte buffer1[] = new byte[inputStream1.available()];
inputStream1.read(buffer1);
inputStream1.close();
byte buffer2[] = new byte[inputStream2.available()];
inputStream2.read(buffer2);
inputStream2.close();
FileOutputStream outputStream1 = new FileOutputStream(file1);
outputStream1.write(buffer2);
outputStream1.close();
FileOutputStream outputStream2 = new FileOutputStream(file1, true);
outputStream2.write(buffer1);
outputStream2.close();
}
}
Мухамед
31 уровень
Помогите разобраться, работает всё как надо. Проверку не проходит
Решен
Комментарии (9)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ilya Ivanov
17 августа 2019, 13:33
ничего не объединилось, но валидацию прошло
0
Skaffman
13 августа 2018, 16:04
А подскажите пожалуйста по решению этому, не очень понимаю.
Хронология как я понимаю такая.
Есть два файла file1 и file2, мы из них считываем их содержимое, закидываем это содержимое в массивы buffer1 и buffer2, далее записываем в file1 это содержимое, т.е. сначала buffer2 и потом buffer1. Не понятно вот что: почему после записи в file1 у нас не получается в нем содержимое buffer1, buffer2, buffer1? Мы же не удаляли из file1 его содержимое. Куда оно делось?
+1
Мухамед
15 августа 2018, 15:00
Метод write всегда заново переписывает данные в файл.
+1
Skaffman
15 августа 2018, 15:05
Спасибо. Все встало на свои места сразу)
0
--------Master
15 августа 2018, 15:09полезный
"Перезаписывает файл заново" конструктор FileOutputStream без параметра append, а метод write просто пишет данные в конец файла.
+1
Мухамед
15 августа 2018, 15:17
На Ваш вопрос Egorro ответил более точно.
+1
Ярослав Java Developer Master
11 июля 2018, 07:39решение
А зачем дважды создавать поток, если можно было просто сначала buffer2 записать, а потом buffer1? Но, в целом, по идее, данное решение должно было пройти. Попробуйте убрать лишний outputStream2 и сделать все через один.
+2
Мухамед
11 июля 2018, 07:45
Внатуре) сработало , Спасибо
0
Veryprosto
15 августа 2019, 17:36
Понимаю что пишу больше чем через год. Но просматривая решения этой и предыдущей задачи, НЕ ПОНИМАЮ как можно обойтись одним outStream?
Программа работает так(как я понимаю):
1. считали в два массива два файла.
2. открываем поток для записи с параметром append - false, и очищая файл 1 записываем в него содержимое файла 2. т.е. перезаписываем. Если мы изначально поставим append true то мы допишем в файл 1 (сохраняя его содержимое) ...
3. заккрываем поток записи с параметром false, и открываем с параметром true и "дописываем" к новому(после п.2) содержимому файла 1, старое содержимое файла 1.
Объясните пожалуйста КАК можно обойтись одним потоком записи?
Кроме вариантов сложить два массива в третий и потом записать))
+1