Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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 读取文件时FileNotFoundException_Java - Fatal编程技术网

Java 读取文件时FileNotFoundException

Java 读取文件时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

在执行程序时,我得到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 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)}
          块中。