0

我在 java 中有一个项目,我在其中读取了一些 csv 数据。我必须输入具体的路径。现在我想把这个项目发给别人,但他不应该改变路径信息。他应该能够运行该项目,而无需更改代码中的任何内容。

我已经将 csv 数据放入我的源文件中,但是在尝试使用此路径时出现异常。

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。

4

3 回答 3

1

将文件放在 Java 源文件夹的根目录中,然后确保它符合您的类或 bin 或目标文件夹(所有编译的类都在其中)。完成后,更改您的代码,如下所示:

   InputStream inputStream = 
                  getClass().getClassLoader().getResourceAsStream("text.csv");
   BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream ));

当您打包您的项目以进行分发时,请确保您的项目text.csv打包在同一个文件夹中,即类文件夹的根目录中。

于 2012-12-02T15:30:36.867 回答
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]));
    // ...
}
于 2012-12-02T15:23:53.960 回答
-1

根据项目,只需让程序提示用户输入 CSV 文件的文件路径即可。如果它是命令行程序,请使用System.in读取路径字符串并使用它来代替"text.csv".

就像是:

Scanner input = new Scanner( System.in );
String path = input.next();
BufferedReader in = new BufferedReader(new FileReader(path));

我还建议首先确保文件确实存在于路径中,然后返回友好消息,而不是仅仅抛出原始异常。

于 2012-12-02T15:21:16.837 回答