Java не может сканировать из текстового файла, даже если он находится в моем рабочем каталоге - PullRequest
0 голосов
/ 27 сентября 2018
import java.util.Scanner;
import java.io.*;
public class scanners {

    public static void main(String[] args) {
        File testFile = new File("names.txt");
        // Scanner sc = new Scanner(testFile);
        System.out.println(System.getProperty("user.dir"));
    }
}

Мой вывод из этого кода C:\Users\steve\eclipse-workspace\a3, а мой names.txt помещен в эту папку.Однако, когда я раскомментирую код, создающий объект сканера, я получаю FileNotFoundException.Что я делаю неправильно?

Редактировать

import java.util.Scanner;
import java.io.*; 

public class scanners {

public static void main(String[] args) {
    Scanner sc = null;
    try {
        sc = new Scanner(new File("names.txt"));
    }
    catch(FileNotFoundException e) {
        System.out.println("Problem reading the data file. Returning null for Scanner"
                        + "object. Problems likely to occur." + e);
    }

    System.out.println(sc.nextLine());

}
}

По некоторым причинам этот формат работает нормально, но тот, который я публиковал ранее, не работает.Я действительно понятия не имею, почему.

Ответы [ 4 ]

0 голосов
/ 27 сентября 2018

systemproperty 'user.dir' относится к домашнему каталогу пользователя.Это НЕ то же самое, что «текущий рабочий каталог», то есть каталог, в котором разрешены относительные пути.

В вашем случае 2 явно не равны.

Вы можетелибо используйте следующее:

new File(getSystemProperty("user.dir"), "names.txt");

или вы можете указать абсолютный путь и помнить, что в java обратная косая черта - это строка escape, поэтому она будет выглядеть следующим образом:

new File("C:/Users/steve/eclipse-workspace/a3/names.txt");

илиальтернативно:

new File("C:\\Users\\steve\\eclipse-workspace\\a3\\names.txt");

или если этот файл names.txt находится в том же месте, что и ваши файлы классов:

new Scanner(ClassYouAreIn.class.getResourceAsStream("names.txt"), StandardCharsets.UTF_8);
0 голосов
/ 27 сентября 2018

Попробуйте добавить текстовый файл непосредственно в Eclipse, в проводнике пакетов щелкните правой кнопкой мыши свой проект и выберите «Добавить» -> безымянный текстовый файл, сохраните его как names.txt.

Возможно, вы также назвали его имена.txt со скрытым типом файла, так что теперь он называется names.txt.txt, что иногда случалось со мной: D

0 голосов
/ 27 сентября 2018

Я думаю, что наиболее вероятно, что код на самом деле не запускается в той директории, которую вы считаете.Если вы замените File testFile = new File("names.txt"); на File testFile = new File("C:\Users\steve\eclipse-workspace\a3\names.txt");, это сработает?Если это так, проверьте свою конфигурацию запуска в Eclipse, чтобы убедиться, что вы действительно работаете в этой папке

0 голосов
/ 27 сентября 2018

Проверьте абсолютный путь к вашему names.txt следующим образом:

System.out.println(new File("names.txt").getAbsolutePath());

Он покажет вам, где JVM ожидает найти файл и присутствует ли он в ожидаемой папке.

...