package com.javarush.task.task18.task1810;
import java.io.*;
public class Solution {
public static void main(String[] args) throws DownloadException, IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
FileInputStream fileInputStream;
do {
fileInputStream = new FileInputStream(bufferedReader.readLine());
}
while (fileInputStream.getChannel().size() > 1000);
fileInputStream.close();
throw new DownloadException();
}
public static class DownloadException extends Exception { }
}
Антон
23 уровень
Почему этот вариант не принимает валидадор. В ИДЕ работает.
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
JustinianJudge в Mega City OneMaster
22 марта 2020, 16:14
По каким пунктам валидатор не принимает?
0
Антон
22 марта 2020, 16:22
К сожалению у меня старая подписка, и детальной информации о проверке программы у меня нет.
0
JustinianJudge в Mega City OneMaster
22 марта 2020, 16:30решение
Я бы не засчитал этот код по двум моментам.
Не соответствие условиям:
* Программа должна работать, пока введенный файл не окажется меньше 1000 байт.
У тебя условие по другому составлено.
* Поток FileInputStream должен быть закрыт.
Здесь навскидку сложно сказать, по идее при отлинковании предыдущего стрима новым GC должен кильнуть предыдущий стрим, но если бы я делал эту задачу, я бы начинал с того, что закрывал потоки прямо в цикле - создал поток, там же закрыл.
То что ты в конце последний из N потоков закрываешь, ну так себе.
+ обрати внимание на getChannel().size() , не самый ортодоксальный метод, попробуй комбинации других
+2
Антон
22 марта 2020, 16:36
Спасибо за разъяснение. Уже выполнил задачу с помощью списка и проверки размера списка(больше 1000 - очистить, меньше - закрыть поток и выбросить исключение). Опять же, в моем готовом решении, поток закрывается после выполнения условия. Но Ваш совет про закрытия сразу после чтения более разумный.
0