Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取java中的路径时出错_Java_String_File Io_Bufferedreader_Filereader - Fatal编程技术网

读取java中的路径时出错

读取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

我正在尝试用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();
} 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"));