读取java中的路径时出错
我正在尝试用java读取文本文件,但遇到了一个恼人的FILENOTFOUND异常:读取java中的路径时出错,java,string,file-io,bufferedreader,filereader,Java,String,File Io,Bufferedreader,Filereader,我正在尝试用java读取文本文件,但遇到了一个恼人的FILENOTFOUND异常: try { BufferedReader br = new BufferedReader (new FileReader("/home/asad/workspace/MyFirstProject/HelloWorld.txt")); while ((reader = br.readLine())!= null); System.out.print(reader); br.close
try {
BufferedReader br = new BufferedReader (new FileReader("/home/asad/workspace/MyFirstProject/HelloWorld.txt"));
while ((reader = br.readLine())!= null);
System.out.print(reader);
br.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这是最简单的代码,应该从指定路径读取文本文件名HelloWorld,应该将其存储在字符串“reader”中,并在控制台上显示其输出,但编译器在定位文件时遇到问题
奇怪的是,我尝试使用getCanonicalPath()查找文件路径,它指定的路径与我一直在查找的路径相同,但编译器找不到该文件。有什么帮助吗 while循环中的空语句
代码>一直执行到文件结束
if ((reader = br.readLine())!= null) { // Not ;
System.out.println(reader); // Not print, as reader has "\r\n" removed
}
br.close();
使用if
而不是通常的while
仅检索第一行
FileNotFoundException可能是真的。要在终端中查找输入错误,请执行以下操作:
cat /home/asad/workspace/MyFirstProject/HelloWorld.txt
ls /home/asad/workspace/MyFirstProject
ls /home/asad/workspace
很可能应该是“MyfirstProject”左右。请在编写代码之前检查此测试:
File file = new File("/home/asad/workspace/MyFirstProject/HelloWorld.txt");
if( file.exists() ) {
System.out.println("File exists!");
} else {
System.out.println("File not existst!");
}
如果您获得FileNotFoundException,则文件不在此本地化中,或者文件名不正确 我刚刚发现了代码的问题,
通过从打印解决方案的路径中省略.txt
我把代码从
BufferedReader br = new BufferedReader (new FileReader("/home/asad/workspace/MyFirstProject/HelloWorld.txt"));
到
和boosh控制台打印文件中存储的文本 你确定HelloWorld.txt吗?不是HelloWorld.java吗?请检查文件权限,并检查exists()
方法返回的内容。如果文件在那里,而您仍然得到一个FileNotFound,那么这些文件就是最先出现的文件。文件的内容完全独立于扩展名。文件的确切名称是什么?HelloWorld.txt或HelloWorld.java?@prabug,没有引发任何权限异常,但是您能告诉我在哪里使用exists()?@Asad,File File File=new File(mypath+myfile);System.out.println(“文件存在吗?”+file.exists())代码>很好的定位!虽然这不会修复FileNotFoundException
@joop,但我已将该分号放在没有括号的位置,因为文本文件仅包含一个文件。如果while
语句中出现了该问题,则可以使用reader=br.readLine()
如果文件仅包含一行,请将while
更改为If
。保留大括号,否则将打印null。刚刚看到了另一个细节。@Orti是对的;我太过分了,当然“error”不是bug。我已经这样做了,它返回false,但是如果我通过terminal.show命令'ls-l/home/asad/workspace/MyFirstProject/HelloWorld.txt'的输出看到它,它会将文件显示在同一个目录中。谢谢kris,但是通过排除该类型,问题得到了解决。
BufferedReader br = new BufferedReader (new FileReader("/home/asad/workspace/MyFirstProject/HelloWorld"));