Нет такого файла или каталога - Исключение в потоке "main" java.io.FileNotFoundException - PullRequest
0 голосов
/ 15 октября 2019

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

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;

public class FileIO 
{
    public static void main (String [] args) throws FileNotFoundException 
    {
        int num;
        Scanner reader = new Scanner (new File ("/User/3020418/Desktop/MyData.txt"));
        PrintWriter  writer = new PrintWriter (new File("/⁨Users/3020418⁩/⁨Desktop⁩/Output.txt"));  
        while (reader.hasNext())  
        {   // reads until EOF 
              num = reader.nextInt(); 
             System.out.print(num);
              if(num > 0)
              {
                  for (int i = 1; i < num; i++)
                  {
                      writer.print("x");
                  }
              }

              if(num == 0)
              {
                  writer.print(" ");
              }

              if(num < 0)
              {
                  for(int i = Math.abs(num); i > 0; i--)
                  {
                      writer.print("\n");
                  }
              }
        }
        writer.close();
        reader.close();


}

}

Вот полная ошибка, которую я продолжаю получать:

Exception in thread "main" java.io.FileNotFoundException: /User/3020418/Desktop/MyData.txt (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.util.Scanner.<init>(Scanner.java:611)
at FileIO.main(FileIO.java:11)

Ответы [ 3 ]

3 голосов
/ 15 октября 2019

Если вы на Mac, то это должно быть /Users/3020418/Desktop/MyData.txt, вам не хватало s в конце User ... может быть?

1 голос
/ 15 октября 2019

Вместо использования абсолютного пути в качестве String и работы с разделителями файлов, используйте System.getProperty("user.home"), чтобы получить домашний каталог, а затем используйте конструктор класса File, чтобы создать путь пошагово / file-по файлу:

File desktop = new File(System.getProperty("user.home"), "Desktop");
File myDataTxt = new File(desktop, "MyData.txt");
0 голосов
/ 15 октября 2019

Используйте System.getProperty("user.home"), чтобы перейти к домашнему каталогу, затем найдите свой файл.

String home = System.getProperty("user.home");
File f = new File(home + File.separator + "Desktop" + File.separator + "MyData.txt");

Чтобы быть независимым от ОС, используйте File.separator intead передней или задней косой черты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...