在Java中读取文件时,它找不到该文件

时间:2013-12-02 16:15:39

标签: java file

我已经编写了以下代码来读取Java中的txt:

public static void main(String[] args) throws FileNotFoundException, IOException {
    // TODO code application logic here
    String name;
    String line;
    System.out.println("Input file name");
    Scanner inp=new Scanner(System.in);
    name=inp.nextLine();  
    FileReader file=new FileReader(name);
    BufferedReader br=new BufferedReader(new FileReader(name));
    while((line=br.readLine())!=null){
        System.out.println(br.readLine());
    }
    br.close();
}

我有一个txt文件,它位于我的java代码的同一个文件夹下,它的名字是data.txt(它包含一行数字列表),我得到的问题是,当我运行这个时,我得到了以下消息:

Exception in thread "main" java.io.FileNotFoundException: data.txt (The system cannot find the file specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:97)

哪里出错?如果文件不存在,我还可以用try catch块包围它?

我已经放了System.out.println(new File(name).getAbsoluteFile);并且它通过data.txt显示所有路径,但我想默认指向我当前的文件夹;我应该使用Scanner吗?

2 个答案:

答案 0 :(得分:4)

如果你想使用相对文件名并且你从像netbeans或eclipse这样的IDE运行,你的文件结构应该看起来像这样

ProjectRoot
         file.txt
         src
         build

file.txt是你正在使用的相对路径。如果文件路径中未指定其他目录,IDE将首先在项目根目录中搜索该文件。

答案 1 :(得分:0)

如果您使用的是扫描仪,则需要使用文件

    Scanner inp=new Scanner(System.in);
    name=inp.nextLine();  

    File file = new File(name);

    if(file.exists()) {
     try {
         FileReader file=new FileReader(name);
         BufferedReader br=new BufferedReader(new FileReader(name));
         while((line=br.readLine())!=null){
            System.out.println(br.readLine());
         }
         br.close();
      }
      catch(IOException e) {
        System.out.println(e.getMessage());
       }
    }

应该有所帮助,希望如此:)