我正在尝试用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());
}
}
}
答案 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。