Реализовал по следующей логике (которая по моему мнению сходится с начальным заданием):
1) Отловил исключение при вводе не правильного имени файла
2) В блоке catch вывел нужное сообщение, считал с консоли еще раз имя и в этом же блоке сделал попытку еще раз считать файл.
При валидации вываливается рекомендация:
"Проверь, что программа успешно копирует содержимое, если первый раз было введено имя несуществующего файла."
Если я и второй раз ввожу не правильное имя, программа завершается, не может быть успешного копирования. О какой проверке успешности идет речь, если в условии об этом ни слова?
package com.javarush.task.task09.task0929;
import java.io.*;
/*
Обогатим код функциональностью!
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String sourceFileName = reader.readLine();
String destinationFileName = reader.readLine();
InputStream fileInputStream=null;
try {
fileInputStream = getInputStream(sourceFileName);
} catch (IOException e) {
System.out.println("Файл не существует.");
sourceFileName = reader.readLine();
fileInputStream = getInputStream(sourceFileName);
}
OutputStream fileOutputStream = getOutputStream(destinationFileName);
while (fileInputStream.available() > 0) {
int data = fileInputStream.read();
fileOutputStream.write(data);
}
fileInputStream.close();
fileOutputStream.close();
}
public static InputStream getInputStream(String fileName) throws IOException {
return new FileInputStream(fileName);
}
public static OutputStream getOutputStream(String fileName) throws IOException {
return new FileOutputStream(fileName);
}
}
package com.javarush.task.task09.task0929;
import java.io.*;
/*
Обогатим код функциональностью!
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String sourceFileName = reader.readLine();
String destinationFileName = reader.readLine();
InputStream fileInputStream=null;
try {
fileInputStream = getInputStream(sourceFileName);
} catch (IOException e) {
System.out.println("Файл не существует.");
fileInputStream = getInputStream(reader.readLine());
}
OutputStream fileOutputStream = getOutputStream(destinationFileName);
while (fileInputStream.available() > 0) {
int data = fileInputStream.read();
fileOutputStream.write(data);
}
fileInputStream.close();
fileOutputStream.close();
}
public static InputStream getInputStream(String fileName) throws IOException {
return new FileInputStream(fileName);
}
public static OutputStream getOutputStream(String fileName) throws IOException {
return new FileOutputStream(fileName);
}
}