Yuxi Long Ответов: 2

Почему этот сканер не находит свой файл?


Привет сообщество,

Я пытался прочитать файл .txt на Java. Это строка в моем коде, которая выдает ошибку:

Что я уже пробовал:

Scanner in = new Scanner(Paths.get("C:\\Users\\longyuxi\\Documents\\ICPResult.txt"));

Я скопировал и вставил каталог в проводник на моем компьютере, и он открыл txt-файл, который я хотел, чтобы он открыл. Тем не менее эта строка выбрасывает java.io.IOException.

Я также попытался прочитать файл с помощью FileReader. Он выбрасывает а Java.io.FileNotFoundException
FileReader fileReader = new FileReader("C:\\Users\\longyuxi\\Documents\\ICPResult.txt");


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

Scanner in2 = new Scanner(Paths.get("ICPResult.txt"));


Может ли кто-нибудь любезно указать на мою ошибку?

С уважением

Обновление: я скопировал файл на разные диски, но код по-прежнему не работает.
Я также добавил блок try-catch к коду, который должен распечатать сообщение об ошибке следующим образом. Однако ничего не печатается.

try {
            File input = new File("ICPResult.txt");
            FileReader fileReader = new FileReader("D:\\ICPResult.txt");
            FileReader fileReader2 = new FileReader("F:\\ICPResult.txt");
            Scanner in = new Scanner(Paths.get("C:\\Users\\longyuxi\\Documents\\ICPResult.txt"));
            Scanner in2 = new Scanner(Paths.get("ICPResult.txt"));
        }
        catch(IOException ioe)
        {
            ioe.printStackTrace();
            System.out.println(ioe.toString());
            System.out.println(ioe.getMessage());
        }

Mohibur Rashid

а вы пробовали:
реж. C:\Users\longyuxi\Documents\ICPResult.txt
в вашей командной строке? О чем это говорит?

Yuxi Long

Вот что у меня есть:

C:\Users\longyuxi>реж. C:\Users\longyuxi\Documents\ICPResult.txt
Том в диске C-это ОС
Серийный номер тома 9E72-6765

Каталог товаров C:\Users\longyuxi\Documents

17.06.2018 05:00 pm 61,372 ICPResult.txt
1 файл(ы) 61 372 байта
0 Dir(s) 8 098 463 744 байта бесплатно

Mohibur Rashid

Сделай мне одолжение. Запустите следующий код и скажите мне, какой результат вы получите. Включая весь отчет об ошибке

public static void main(String[] args) throws IOException {
    Scanner in = new Scanner(Paths.get("C:\\Users\\longyuxi\\Documents\\ICPResult.txt"));
    System.out.println(in.nextLine());
    in.close();
  }

Yuxi Long

Я запустил эти строки, и он распечатал первую строку файла, без сообщения об ошибке! Я добавил "throws IOException" ко всем задействованным методам. Благодарю вас, сэр!

2 Ответов

Рейтинг:
2

Jochen Arndt

Код выглядит нормально.

Было бы неплохо увидеть полные сообщения об исключениях, потому что они содержат больше информации, например "доступ запрещен".

Возможные источники ошибок-выполнение приложения от имени другого пользователя (пользователю не разрешен доступ к файлу) или блокировка файла (файл открывается другим приложением с исключительным доступом).


Yuxi Long

Привет,

Большое вам спасибо за ваш ответ. Я использую IDE и вытащил то, что, по моему мнению, является сообщениями об ошибках:

Ошибка:(30, 33) Ява: несообщаемого исключение Java-приложений.Ио.Исключение filenotfoundexception; должны быть пойманы или как объявляют, были брошены
Ошибка:(31, 22) Ява: несообщаемого исключение Java для.Ио.Класс IOException; должны быть пойманы или как объявляют, были брошены
Ошибка:(32, 23) java: unreported exception java.io.IOException; должен быть пойман или объявлен выброшенным

Jochen Arndt

Вы должны поймать исключения в своем коде, используя блок try - catch, чтобы получить полное сообщение (что в любом случае является хорошей идеей).

Тем не менее, вы гарантировали, что файл не будет открыт другим приложением?

Yuxi Long

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

Yuxi Long

Благодаря Мохибуру Рашиду проблема была решена. Спасибо и Вам за ваши усилия!

Richard MacCutchan

Это сообщения компилятора, сообщающие вам, что вы не перехватываете исключения, которые могут быть брошены при запуске кода. Ваша программа даже не была скомпилирована.

Рейтинг:
0

Mohibur Rashid

два способа обработки исключений:

public static void main(String[] args) throws IOException {
    Scanner in = new Scanner(Paths.get("C:\\Users\\longyuxi\\Documents\\ICPResult.txt"));
    System.out.println(in.nextLine());
    in.close();
  }


Еще пример:
public static void main(String[] args) {
    Scanner in = null;
    String firstLine=null;
    try {
    in = new Scanner(Paths.get("C:\\Users\\longyuxi\\Documents\\ICPResult.txt"));
    firstLine=in.nextLine();
    in.close();
    } catch(IOException e) {
     System.err.println("File not found");
    }
   if(firstLine!=null) {
    System.out.println(firstLine);
   }
  }