JavaRush /Java блог /Архив info.javarush /Все коректно работает,но не проходит!)
Yourchuk
14 уровень

Все коректно работает,но не проходит!)

Статья из группы Архив info.javarush
Идея такая,когда кидает исключение о том что клас не найден,виводим сообщение и пользуемся рекурсией package com.javarush.test.level09.lesson11.bonus02; import java.io.*; /* Нужно добавить в программу новую функциональность Задача: Программа вводит два имени файла. И копирует первый файл на место, заданное вторым именем. Новая задача: Программа вводит два имени файла. И копирует первый файл на место, заданное вторым именем. Если файла (который нужно копировать) с указанным именем не существует, то программа должна вывести надпись «Файл не существует.» и еще раз прочитать имя файла с консоли, а уже потом считывать файл для записи. */ public class Solution { public static void main(String[] args) throws IOException { help(); } private static void help()throws IOException{ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String sourceFileName = reader.readLine(); String destinationFileName = reader.readLine(); try { FileInputStream fileInputStream = new FileInputStream(sourceFileName); FileOutputStream fileOutputStream = new FileOutputStream(destinationFileName); while (fileInputStream.available() > 0) { int data = fileInputStream.read(); fileOutputStream.write(data); } fileInputStream.close(); fileOutputStream.close(); }catch (FileNotFoundException e){ System.out.println("Файл не существует."); help(); } } }
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Joysi Уровень 41
19 февраля 2016
Можно два замечания:
1) вы каждый раз вводите ДВА имени файла, а для задачи в случае отсутствия считываемого файла нужно еще раз запросить ОДНО имя файла. И только когда файл существует на диске — запросить ВТОРОЕ — куда копируем
2) у вас создается много потоков для чтения с консоли
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

Может его создавать за пределами рекурсивно заданной функции? И не забывать в конце закрывать.