FileInputStream错误Java

时间:2012-12-04 18:35:07

标签: java fileinputstream

我正在尝试用Java编写一个名为“KFormLList.txt”的文件。它与此程序一起保存在默认包中,但是当我尝试运行它时,我收到此错误消息:“错误:KFormLList.txt(系统找不到指定的文件)”

我做错了什么?谢谢你的帮助。

import java.io.*;

public class VLOCGenerater {

/**
 * @param args
 */
public static void main(String[] args) {
    try {
        //Read the text file "KFormLList.txt"
        FileInputStream fis = new FileInputStream("KFormLList.txt");

        DataInputStream dis = new DataInputStream(fis);
        BufferedReader br = new BufferedReader(new InputStreamReader(dis));
        String strLine;
        int V = 0;
        int LOC = 0;

        while((strLine = br.readLine())!= null ){
            if (strLine.trim().length() != 0){
                System.out.println(strLine);
                V++;
                }
            else {
                LOC++;
            }
        }
        System.out.println("V = " + V);
        System.out.println("LOC = " + LOC);
        dis.close();
     }
     catch (Exception e){
     System.err.println("Error: " + e.getMessage());
    }

}

}

4 个答案:

答案 0 :(得分:5)

尝试将文本文件放在项目的根目录中。

传递给FileInputStream构造函数的name参数是文件系统中文件的路径名。

  

路径名,无论是抽象的还是字符串形式,都可以是绝对的   或亲戚。绝对路径名是完整的,没有其他   需要信息才能找到它表示的文件。一个   相反,相对路径名必须用来解释   从其他路径名获取的信息。默认情况下,类在   java.io包总是解析相对的路径名   当前用户目录。该目录由系统属性命名   user.dir,通常是Java虚拟的目录   机器被调用。

我假设您使用的是Eclipse,默认情况下,Eclipse会将user.dir设置为您项目的根目录。通过阅读其他材料,Netbeans遵循相同的惯例。

可以使用以下代码对此进行测试,该代码应输出项目的路径:

System.out.println(System.getProperty("user.dir"));

将文件放在目录的根目录中,可以通过FileInputStream找到它。

答案 1 :(得分:1)

如果您正在使用NetBeans(可能与Eclipse类似),请确保您的文件位于NetbeansProjects / YourProject /

如果您已将程序编译为.jar文件,请将txt放在.jar所在的同一位置。

答案 2 :(得分:1)

您可以将文件放在项目的“根目录”中,也可以将文件的“绝对路径”作为FileInputStream的参数提供。

希望有所帮助。 :)

答案 3 :(得分:0)

这样,程序需要工作文件夹中的文件。即你执行java的地方。要从classpath(默认包)加载,请尝试getResourceAsStream。