我正在做一个程序,从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)
如果您在 Mac 上,那么它应该是/Users/3020418/Desktop/MyData.txt
,您在User
结束时错过了一个s
......或?
不要使用绝对路径作为String
并使用文件分隔符,而是使用System.getProperty("user.home")
以获取主目录File
然后使用类构建器逐步构建路径/逐个文件:
File desktop = new File(System.getProperty("user.home"), "Desktop");
File myDataTxt = new File(desktop, "MyData.txt");
使用System.getProperty("user.home")
导航到主目录,然后找到您的文件。
String home = System.getProperty("user.home");
File f = new File(home + File.separator + "Desktop" + File.separator + "MyData.txt");
为了在操作系统上独立,请使用File.separator
斜杠或反斜杠。