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

时间:2019-05-17 08:01:46

标签: java file io

我正在学习Java文件I / O。当我刚从https://www.tutorialspoint.com/java/java_files_io.htm复制代码时 然后我也创建一个“ input.txt”,并将其存储在与Java文件相同的目录中。 位置如下:

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

文本文件:D:\ workspace \ Hello \ src \ io

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

我尝试过搜索。 这与我的情况相同,但解决方法不同。 https://www.eclipse.org/forums/index.php/t/55306/

然后在使用整个目录时解决此问题。

//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();
         }
      }}}

//Finally the answer is putting the whole directory. Why doing this works?

1 个答案:

答案 0 :(得分:0)

当您指定

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

您引用了JVM运行的目录,因此您要打开的文件位于JVMDirectory / input.txt

这是使用相对文件路径时的常规行为。

在这里您可以获得有关该主题的更多信息: https://docs.oracle.com/javase/tutorial/essential/io/path.html

编辑: 如果您将IDE与内置JRE一起使用,则相对路径指向的路径就是您的项目目录。