Java 读取文件时FileNotFoundException
在执行程序时,我得到FileNotFoundExceptionJava 读取文件时FileNotFoundException,java,Java,在执行程序时,我得到FileNotFoundException java.io.FileNotFoundException: Shyam\src\sam\examles\TextFile.txt (The system cannot find the path specified) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Sourc
java.io.FileNotFoundException: Shyam\src\sam\examles\TextFile.txt (The system cannot find the path specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at sam.examples.ReadingFile.main(ReadingFile.java:9)
该文件与我的java程序所在的路径相同,如下所示
Shyam
|- src
|-sam.examples
|-ReadingFile.java
|-TextFile.txt
请您帮助我们解决此问题,您可能需要避开文件路径中的反斜杠。你已经为第一个做了,但其他的都没有
FileInputStream fstream = new FileInputStream("C:\\Documents and Settings\\flower\\workspace\\Shyam\\src\\sam\\examples\\TextFile.txt");
您可能需要避开文件路径中的反斜杠。你已经为第一个做了,但其他的都没有
FileInputStream fstream = new FileInputStream("C:\\Documents and Settings\\flower\\workspace\\Shyam\\src\\sam\\examples\\TextFile.txt");
异常表明指定的路径不同。要么使用整个绝对路径(如代码中所示,但可能没有执行),要么使用类路径资源
- 对于绝对路径方法,您需要编译上述代码(现在不需要)。避开所有斜杠(如马丁所示)或使用前斜杠(如巴特所建议)。但使用绝对路径很少是个好主意
- 将.txt文件放在类路径上。也就是说,.class文件所在的位置(不仅仅是.java文件所在的位置)和使用。这将查找当前类所在包中的文件。您还可以使用类路径绝对路径,如
.getResourceAsStream(“/sam/examples/TextFile.txt”)
- 对于绝对路径方法,您需要编译上述代码(现在不需要)。避开所有斜杠(如马丁所示)或使用前斜杠(如巴特所建议)。但使用绝对路径很少是个好主意
- 将.txt文件放在类路径上。也就是说,.class文件所在的位置(不仅仅是.java文件所在的位置)和使用。这将查找当前类所在包中的文件。您还可以使用类路径绝对路径,如
.getResourceAsStream(“/sam/examples/TextFile.txt”)
- 您的异常表明您指定的路径不同。要么使用整个绝对路径(如代码中所示,但可能没有执行),要么使用类路径资源
- 调试提示:
重构此行:
FileInputStream fstream = new FileInputStream("C:\\Documents and Settings\flower\workspace\Shyam\src\sam\examples\TextFile.txt");
到
然后查看输出是否真的是该文件。调试提示:
重构此行:
FileInputStream fstream = new FileInputStream("C:\\Documents and Settings\flower\workspace\Shyam\src\sam\examples\TextFile.txt");
到
然后查看输出是否真的是该文件。在Java中,您永远不需要在文件名中使用反斜杠。将它们全部改为正斜杠,并去掉双斜杠。在Java中,您永远不需要在文件名中使用反斜杠。将它们全部改为正向斜杠,并去掉双斜杠。试试这些 FileInputStream fstream=newfileinputstream(新文件(“C:\Documents and Settings\flower\workspace\Shyam\src\sam\examples\TextFile.txt”) 或 FileReader fstream=newFileReader(新文件(“C:\Documents and Settings\flower\workspace\Shyam\src\sam\examples\TextFile.txt”) BufferedReader in=新的BufferedReader(fstream) 试试这些 FileInputStream fstream=newfileinputstream(新文件(“C:\Documents and Settings\flower\workspace\Shyam\src\sam\examples\TextFile.txt”) 或 FileReader fstream=newFileReader(新文件(“C:\Documents and Settings\flower\workspace\Shyam\src\sam\examples\TextFile.txt”)
BufferedReader in=新的BufferedReader(fstream) 您确定这就是正在使用的代码,并且文件确实存在吗?您确实需要仔细检查文件路径。打开文件资源管理器并将其粘贴到地址行。。。是否存在?FileNotFoundException不存在:文件确实不存在。请遵循中显示的建议-它很可能会立即显示问题!您确定这就是正在使用的代码,并且文件确实存在吗?您确实需要仔细检查文件路径。打开文件资源管理器并将其粘贴到地址行。。。是否存在?FileNotFoundException不存在:文件确实不存在。请遵循中显示的建议-它很可能会立即显示问题!很好,但这引发了我的疑问,这是否是真正的代码。因为它的当前形式无法编译。。。或者只使用前斜杠:
“C:/Documents and Settings/flower/workspace/…”
我想如果不跳过后斜杠,它是不会编译的。。。或者是吗?不,它不会,它会给出一个非法的转义字符错误。@deadsven,不,它的“C:\\folder”
(2个反斜杠)或“C:/folder”
(1个正斜杠)。很好,但这引发了我的问题,这是否是实际的代码。因为它的当前形式无法编译。。。或者只使用前斜杠:“C:/Documents and Settings/flower/workspace/…”
我想如果不跳过后斜杠,它是不会编译的。。。或者是吗?不,不会,它会给出一个非法的转义字符错误。@deadsven,不,它的“C:\\folder”
(2个反斜杠)或“C:/folder”
(1个正斜杠)。这是一个非常有用的提示。强烈推荐。特别是在}catch(FileNotFoundException e){throw new RuntimeException(“absolute path=“+file.getAbsolutPath,e)}
块中。这是一个非常有用的技巧。强烈推荐。特别是在}catch(FileNotFoundException e){throw new RuntimeException(“absolute path=“+file.getAbsolutPath,e)}
块中。