Я не понимаю, что не так.
"Для первого файла создай поток для чтения и считай его содержимое."
создан FileInputStream(firstFileName), содержимое считано в массив firstFileData.
"Затем, для первого файла создай поток для записи(поток для записи должен быть один). Для второго - для чтения."
создан FileOutputStream(firstFileName) и FileInputStream(secondFileName).
"Содержимое первого и второго файла нужно объединить в первом файле."
"Сначала должно идти содержимое второго файла, затем содержимое первого."
Записываю сначала данные из второго файла, потом - из первого и все - в первый файл.
out.write(secondFileData);
out.flush();
out.write(firstFileData);
out.close();
"Созданные для файлов потоки должны быть закрыты."
Для всех созданных потоков есть close();
Что не так?
package com.javarush.task.task18.task1819;
/*
Объединение файлов
*/
import java.io.*;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) {
BufferedReader reader = null;
FileInputStream in = null;
// FileInputStream in2 = null;
FileOutputStream out = null;
try {
reader = new BufferedReader(new InputStreamReader(System.in));
String firstFileName = reader.readLine();
String secondFileName = reader.readLine();
// Для первого файла создай поток для чтения и считай его содержимое.
in = new FileInputStream(firstFileName);
int firstFileSize = in.available();
byte[] firstFileData = new byte[firstFileSize-1];
while (in.available() > 0) {
in.read(firstFileData, 0, firstFileSize);
}
in.close(); // Созданные для файлов потоки должны быть закрыты.
// Затем, для первого файла создай поток для записи(поток для записи должен быть один). Для второго - для чтения.
out = new FileOutputStream(firstFileName);
in = new FileInputStream(secondFileName);
int secondFileSize = in.available();
byte[] secondFileData = new byte[secondFileSize-1];
while (in.available() > 0) {
in.read(secondFileData, 0, secondFileSize);
}
in.close(); // Созданные для файлов потоки должны быть закрыты.
//Сначала должно идти содержимое второго файла...
out.write(secondFileData);
out.flush();
//...затем содержимое первого.
out.write(firstFileData);
out.close(); // Созданные для файлов потоки должны быть закрыты.
} catch (IOException e) {}
finally {
try {
// Созданные для файлов потоки должны быть закрыты.
if (reader != null) reader.close();
if (in != null) in.close();
// if (in2 != null) in2.close();
if (out != null) out.close();
} catch (IOException e2) {}
}
}
}