Чтение файла на Java (используется IDE) - PullRequest
1 голос
/ 10 апреля 2011

Я пытался написать кусок кода Java, чтобы прочитать каждую строку из файла и добавить ее в Arraylist.Вот мой код:

// try catch block removed for clarity.
file = new TextFileIn("names.txt");
String line = null;
while ((line = file.readLine()) != null) {
    list.add(line);
}

names.txt находился в той же папке пакета, что и мой код.IDE, которую я использовал, был Eclipse.Однако когда я запускаю код, я получаю FileNotFoundException.TextFileIn класс происходит от http://www.javaranch.com/doc/com/javaranch/common/TextFileIn.html

Как я могу получить файл, который будет найден?

Ответы [ 3 ]

2 голосов
/ 10 апреля 2011

Вы используете текущий рабочий каталог при доступе к файлу.Рабочий каталог зависит от того, как вы запустили приложение.В Eclipse это обычно корневая папка проекта.В командной строке это текущий открытый каталог.Вы не можете контролировать это изнутри Java-кода, поэтому это считается плохой практикой для файлов, которые должны быть частью самого приложения.

Файл, очевидно, находится в том же пакете, что и исполняемый код, поэтомуон уже находится в пути к классам, и тогда вы можете (и должны) просто получить его прямо из пути к классам.

InputStream input = getClass().getResourceAsStream("names.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(input, "UTF-8"));
String line = null;

while ((line = reader.readLine()) != null) {
    // ...
}

Если вы вызываете это в контексте static, тогда замените getClass() на YourClassName.class где YourClassName - это название класса, в котором находится этот код.

См. также:

1 голос
/ 10 апреля 2011

Он находится в папке пакета.
"names.txt" ссылается на корневой каталог проекта. Поэтому вы должны искать в вашей исходной папке, например, "src / your.package / names.txt".

0 голосов
/ 10 апреля 2011

Вы должны узнать, как компилировать и запускать программы из командной строки, а позже, как изменить настройки вашей IDE, сделать то же самое. Базовые знания - это то, что вы можете носить с собой из IDE в IDE, от затмения до netbeans, до IntelliJ ....

Даже если вы запускаете с рабочего стола, нажимая или из IDE, вы фактически находитесь в папке вашей ОС. В eclipse по умолчанию это ваш каталог-классов при запуске кода, но его можно изменить на одной из вкладок run as, и это будут классы $ {PROJECT} / bin или $ {PROJECT} /, где бы вы ни находились , Поэтому вы должны поместить туда свой файл, но обратите внимание - он может быть удален, если вы нажмете «очистить все» или что-то еще, поэтому используйте копию.

Вместо забавного TextFileIn, почему бы вам не использовать java.util.Scanner?

Scanner scanner = new Scanner ("names.txt");
while (scanner.hasNextLine ())
    String line = scanner.nextLine ();
...