我在java中有一个项目,其中我读了一些csv-data。我必须输入特定的路径。现在我想将此项目发送给其他人,但他不应该更改路径信息。他应该能够运行项目,而无需更改代码中的任何内容。
我已经将csv-data放入我的源文件中,但在尝试使用此路径时出现异常。
BufferedReader in = new BufferedReader(new FileReader("text.csv"));
Exception while reading csv file: java.io.FileNotFoundException: text.csv (No such file or directory)
我正在使用IDE eclipse。
答案 0 :(得分:0)
我会通过类似的程序参数传递.CSV文件的路径:
java MyCsvReader C:\Users\Me\file.csv
然后在args
方法中通过main
访问传递的参数:
public static void main(String[] args) {
if(args.length != 1) {
System.out.println("Correct usage: MyCsvReader <CSV path>");
System.exit(1);
return;
}
BufferedReader in = new BufferedReader(new FileReader(args[0]));
// ...
}
答案 1 :(得分:0)
将文件放在Java源文件夹的根目录中,然后确保它符合您的类或bin或目标文件夹(所有已编译的类都在哪里)。完成后,请按以下方式更改代码:
InputStream inputStream =
getClass().getClassLoader().getResourceAsStream("text.csv");
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream ));
当您打包项目以进行分发时,请确保您的text.csv
打包在同一文件夹中,即类文件夹的根目录。
答案 2 :(得分:-1)
根据项目的不同,只需让程序提示用户输入CSV文件的文件路径即可。如果是命令行程序,请使用System.in
读取路径字符串并使用它代替"text.csv"
。
类似的东西:
Scanner input = new Scanner( System.in );
String path = input.next();
BufferedReader in = new BufferedReader(new FileReader(path));
我还建议首先确保文件实际存在于路径中,然后回放友好消息,而不是仅仅抛出原始异常。