1

我正在尝试用 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

4 回答 4

5

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

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

路径名,无论是抽象的还是字符串形式的,都可以是绝对的或相对的。绝对路径名是完整的,因为不需要其他信息来定位它表示的文件。相反,相对路径名必须根据从其他路径名获取的信息来解释。默认情况下,java.io 包中的类总是根据当前用户目录解析相对路径名。此目录由系统属性 user.dir 命名,通常是调用 Java 虚拟机的目录。

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

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

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

将文件放在目录的根目录中可以让FileInputStream.

于 2012-12-04T18:37:13.100 回答
1

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

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

于 2012-12-04T18:39:21.710 回答
1

要么将文件放在项目的“根目录”中,要么将文件的“绝对路径”作为参数提供给 FileInputStream。

希望有帮助。:)。

于 2012-12-04T18:42:31.153 回答
0

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

于 2012-12-04T18:39:10.000 回答