level18.lesson05.task03

У меня вопрос ведь в задании не сказано что для каждого файла должен быть свой поток. Я решил задачу используя один поток для записи в файл. Открыл поток для первого файла, записал в него часть данных, закрыл. Открыл для второго файла, записал оставшееся и закрыл. Задача не была принята на сервере до тех пор пока не сделал для каждого файла свой поток записи. Почему нельзя было использовать один поток, из-за этого могут быть какие-то проблемы?

9 комментариев

remain4life
Присоединюсь к вопросу. Когда проходил эту задачу — создавал 2 потока, т.к. это показалось удобнее, которые после записи и закрыл. Имхо, считаю, что разницы нет — сразу ли записывать в оба файла или по очереди. Если разница есть — тоже буду рад услышать конкретные аргументы.
Exidnus
Я не очень понял: Вы записывали с помощью одного потока данные в два файла?
AleksandrGurin
Да, так как код переделал уже, приведу по памяти


BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file = reader.readLine();
String file2 = reader.readLine();
String file3 = reader.readLine();
reader.close();

FileInputStream inputStream = new FileInputStream(file);
FileOutputStream outputStream;
byte[] buffer = new byte[inputStream.available()];
int count = inputStream.read(buffer);
inputStream.close();
int length = ((count / 2) + (count % 2));
outputStream = new FileInputStream(file2);
outputStream.write(buffer, 0, length);
outputStream.close();
outputStream = new FileInputStream(file3);
outputStream.write(buffer, length, count - length);
outputStream.close();
Exidnus
FileOutputStream outputStream;
outputStream = new FileInputStream(file2);

Тут явно что-то странное. :)
Если у Вас было что-то вроде:
FileOutputStream outputStream;
outputStream = new FileOutputStream(file2);
//some work with stream, then close
outputStream = new FileOutputStream(file3);
//some work with stream, then close

То Вы использовали два стрима для записи в два файла. И Вы использовали одну переменную, которая сначала ссылалась на один стрим, затем на другой.
AleksandrGurin
Да вы правы, но вопрос в том почему такое решение не прошло проверку на сервере?
Exidnus
Или у Вас была ошибка, или ошибка есть в тестах на сервере. Кто знает… :)
AleksandrGurin
После изменения кода вывод не изменился, поэтому думаю что у меня ошибки не было. Мне важно просто знать, что такой вариант допустим, может где-то и когда-то понадобится. :)
remain4life
Думаю, что всё же бага в проверке, я уже такие приколы не раз встречал, как выяснялось — глючная проверка сервера; к примеру — info.javarush.ru/Dany/2013/11/10/level16-lesson10-task05.html#comment64187
Fry
Тесты, как правило, тестируют ваше решение на совсем других входных параметрах. Ваше решение должно быть более уникальным.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.