Java 捕获FileNotFoundException,尽管我尝试将input.txt放在任何目录中?

Java 捕获FileNotFoundException,尽管我尝试将input.txt放在任何目录中?,java,file,io,Java,File,Io,当我创建input.txt并将其存储为与java文件相同的目录时。 地点如下: Java文件:D:\workspace\Hello\src\io\Letter.Java 文本文件:D:\workspace\Hello\src\io\input.txt 我得到错误FileNotFoundException。 然后我尝试放置文本文件,然后尝试运行代码,但它不起作用 当使用整个目录时,问题就解决了 //Before package io; import java.io.*; public class

当我创建input.txt并将其存储为与java文件相同的目录时。 地点如下:

Java文件:D:\workspace\Hello\src\io\Letter.Java

文本文件:D:\workspace\Hello\src\io\input.txt

我得到错误FileNotFoundException。 然后我尝试放置文本文件,然后尝试运行代码,但它不起作用

当使用整个目录时,问题就解决了

//Before
package io;
import java.io.*;
public class Letter {

   public static void main(String args[]) throws Exception {  
      FileInputStream in = null;
      FileOutputStream out = null;

      try {
         in = new FileInputStream("input.txt");
         out = new FileOutputStream("output.txt");

         int c;
         while ((c = in.read()) != -1) {
            out.write(c);
         }
      }finally {
         if (in != null) {
            in.close();
         }
         if (out != null) {
            out.close();
         }
      }

   }

}


//After
package io;
import java.io.*;
public class Letter {

   public static void main(String args[]) throws Exception {  
      FileInputStream in = null;
      FileOutputStream out = null;

      try {
         in = new FileInputStream("D:\\workspace\\Hello\\src\\io\\input.txt");
         out = new FileOutputStream("D:\\workspace\\Hello\\src\\io\\output.txt");

         int c;
         while ((c = in.read()) != -1) {
            out.write(c);
         }
      }finally {
         if (in != null) {
            in.close();
         }
         if (out != null) {
            out.close();
         }
      }}}
最后,答案是把整个目录。为什么这样做?

当您指定

in = new FileInputStream("input.txt");
out = new FileOutputStream("output.txt");
在您的IDE中,您指的是用户运行的目录,因此您试图打开的文件位于workingDirectory/input.txt

这是处理相对文件路径时的常规行为

在这里,您可以获得有关该主题的更多信息:

编辑:
如果您使用带有内置JRE的IDE,则相对路径指向的路径是您的项目目录。

值得补充的是,对于大多数/所有IDE,它只是项目的主目录,例如:D:\workspace\Hello for OP。是的,我将添加这一点。谢谢,现在我了解了路径和目录。是的,我使用带有内置JRE的IDE。另外,Amongalen所说的是真的。太好了,希望您现在理解了:9它意味着当前的工作目录,用户所在的位置:在本例中,无论IDE运行在哪里。与JVMDirectory无关,不管是什么。将D:\\workspace\\Hello\\src\\io\\input.txt移动到D:\\workspace\\Hello\\input.txt。然后在=new FileInputStreaminput.txt中尝试;output.txt文件也是一样。哦,现在它可以工作了,尽管我以前试过这个。奇怪的但是谢谢你!