总是在java中获取FileNotFoundException

时间:2014-05-26 11:50:57

标签: java file-io

我正在使用Scanner来阅读文件内容。为此,我使用以下代码。

public static void main (String[] args) throws IOException {
    File file = new File("/File.txt");
    Scanner sc = new Scanner(file);
    while(sc.hasNextLine()) {
        // Until the end
        System.out.print(sc.nextLine());
    }
    sc.close();
}

但是这段代码总是抛出FileNotFoundException。我试过谷歌搜索,但我找不到在哪里检查文件。其次,我在几乎每个目录中创建了具有相同名称的文件,以检查代码何时捕获文件的存在。

enter image description here

您可以在包中看到我创建了一个名为 File.txt 的文件,以便代码可以在找到它时找到它。

在Java文档中,我知道File接受String参数为

File file = new File("file_name");

但是这里的什么样的或什么是参数,却没有被告知。我可以得到帮助吗?

6 个答案:

答案 0 :(得分:1)

我认为你想要File file = new File("File.txt");而不是File file = new File("/File.txt");,摆脱斜线。如果您想要的是相对路径,则需要.\File.txt

正如@deterministicFail在评论中所说,硬编码路径分隔符不是一个好主意,而是使用System.getProperty("path.separator");这样你的代码应该在多个plataforms中工作,所以你的代码将是:

使其独立于平台(假设您使用的是相对路径):

File file = new File("." + System.getProperty("path.separator") + "File.txt");

答案 1 :(得分:0)

替换

File file = new File("/File.txt");

File file = new File(".\\File.txt");

File file = new File("File.txt");

答案 2 :(得分:0)

我从来没有像你那样做过,但这就是我读文件的方式。

这是班级FileInpuStream的目的。我使用缓冲区来获取字节。

如果只是路径问题,为什么不简单地使用完整路径?您可以从文件信息中复制粘贴它。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

 public class Main {
 public static void main(String[] args) {

  FileInputStream fis = null; 

  try {
  // object I use to read files
     fis = new FileInputStream(new File("File.txt"));
     byte[] buf = new byte[8];

     int n = 0;

 // while there is something in the file
     while ((n = fis.read(buf)) >= 0) {            
        for (byte bit : buf) {
           // do what you want
           System.out.print("\t" + bit + "(" + (char) bit + ")");
           System.out.println("");
        }
     }


  } catch (FileNotFoundException e) {

     e.printStackTrace();
  } catch (IOException e) {

     e.printStackTrace();
  } 
     try {
        if (fis != null)
           fis.close();
     } catch (IOException e) {
        e.printStackTrace();
     }

  }

} }

答案 3 :(得分:0)

File f=new File("testFile.txt");

对于这种推荐,您需要将文件放在您的eclipse项目的根目录中(与src并行)。只有在使用Eclipse IDE时才会出现此问题。

Screen shot for test file

此类问题的最佳解决方案是检查文件的AbsolutePath

System.out.println(f.getAbsolutePath());

它将为您提供代码查找文件的路径。

答案 4 :(得分:0)

如果您在工作目录中查找文件然后使用“File.txt”或“./File.txt”,则有两种可能性。在Windows的情况下,还有一个选项是使用“。\ File.txt”。

如果这不是您要查找的内容,您可以在实例化文件后立即使用两个sysout中的任何一个来检查文件引用的路径,这将为您提供计算机上的绝对路径。     File f = new File("/File.txt");     的System.out.println(f.getAbsolutePath());     的System.out.println(f.getAbsoluteFile()getAbsolutePath());

答案 5 :(得分:-1)

尽量不要使用 File.txt 中的 / ,如果确实需要,请使用反斜杠代替 \ ,因为你'在Windows中重新