Не могу разобраться с заданием пути к файлу. Я создаю файл text.txt в папке с задачей и следующим образом задаю к нему путь и создаю объект BufferReader(название файла вводится через первый BufferREader):
String fileName = "C:/JavaRushTasks/2.JavaCore/src/com/javarush/task/task13/task1326/";
fileReader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName+reader.readLine())));
Программа при этом работает нормально - файл читается, числа сортируются, все выводится на экран. Но при этом валидатор не принимает - пишет, что числа не выводятся на экран, их мало в файле.
Если предыдущие две строки заменить на следующие две:
String fileName = reader.readLine();
BufferedReader fileReader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));
и при этом вводить имя файла как text.txt, то файл java.io.FileNotFoundException - но валидатор все принимает. Почему так? Где хранится этот файл?
package com.javarush.task.task13.task1326;
/*
Сортировка четных чисел из файла
*/
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<Integer> list = new ArrayList<Integer>();
try {
// String fileName = "C:/JavaRushTasks/2.JavaCore/src/com/javarush/task/task13/task1326/";
// BufferedReader fileReader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName+reader.readLine())));
String fileName = reader.readLine();
BufferedReader fileReader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));
while (fileReader.ready()){
int i = Integer.parseInt(fileReader.readLine());
if (i % 2 == 0)
list.add(i);
}
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
Collections.sort(list);
for (Integer i : list){
System.out.println(i);
}
}
}