Сканер не видит файл Java

#java

#java

Вопрос:

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

 public static void main(String[] args) {
 File file = new File("src/1.txt");
     Scanner sc = new Scanner(file);
 int n = sc.nextInt();
 int [][] graph = new int [n][n];
 for (int x =0; x<n; x  )
     for (int y=0; y<n;y  )
         graph[x][y] = sc.nextInt();

}
  

Файл хранится в C:UsersevlucIdeaProjectska1srccomcompany

Комментарии:

1. С какой ошибкой / проблемой вы столкнулись при запуске этого

2. вы утверждаете, что файл хранится в src com company. Так что попробуйте srccomcompany1.txt

3. в каком каталоге или классе вы находитесь?

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

5. Вы должны попробовать "Users/evluc/IdeaProjects/ka1/src/com/company/1.txt"

Ответ №1:

попробуйте приведенный ниже код.

  File file = new File("C:UsersevlucIdeaProjectska1srccomcompanysrc1.txt");

    try {

        Scanner sc = new Scanner(file);

        while (sc.hasNextLine()) {
            int n = sc.nextInt();
            int [][] graph = new int [n][n];
            for (int x =0; x<n; x  )
              for (int y=0; y<n;y  )
                graph[x][y] = sc.nextInt();
        }
        sc.close();
    } 
    catch (FileNotFoundException e) {
        e.printStackTrace();
    }
  

Комментарии:

1. смешивать обратную и переднюю косые черты не рекомендуется, и в этом случае, вероятно, даже не сработает

Ответ №2:

Вы можете попробовать file.getCanonicalPath() или file.getAbsolutePath() определить, какой путь к файлу вы пытаетесь прочитать, и, следовательно, можете выяснить, что не так с вашим относительным путем. Я предполагаю, что это просто проблема с относительным путем и не имеет ничего общего с фактической процедурой, которую вы пытаетесь выполнить для доступа к файлу. Если вы знаете, на что вы указываете с помощью File объекта, вы также будете знать, как вам нужно изменить свой относительный путь. Это всегда первое, что нужно проверить при работе с относительными путями.

Комментарии:

1. да. если эта программа присутствует в том же каталоге. здесь можно использовать только имя

2. я использовал getAbsolutePath(), и он показал точный путь, который я передаю в File файл = новый файл («src/1.txt»); Однако сканер сообщает: необработанное исключение: java.io.FileNotFoundException

3. @mak У меня нет времени проверять это самостоятельно с помощью кода, но я беру это journaldev.com/848/java-file-path-absolute-canonical в качестве примера я сомневаюсь, что вы не получите абсолютный путь с помощью обоих описанных выше методов. Как вы можете видеть, относительный путь преобразован в абсолютный путь. Возможно, я чего-то не понимаю, но IDK, что это должно быть;)

Ответ №3:

Входные данные, которые вы предоставили, src/1.txt он пытается просмотреть файл по местоположению: C:UsersevlucIdeaProjectssrc1.txt .

Либо укажите абсолютный путь к файлу, либо исправьте свой путь.