【问题标题】:File path for csv-file in JavaJava中csv文件的文件路径
【发布时间】:2012-12-02 15:16:41
【问题描述】:

我有一个 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。

【问题讨论】:

  • 如果文件不存在,它就不存在。如果其他人不需要使用自己的数据,请考虑将 jar 中的 csv 文件打包为资源。
  • 并考虑Class.getResource()
  • 使用 FileReader 的方法将假定文件存在于当前工作目录中。您可以确保文件确实在当前工作目录中;或者,像戴夫牛顿提到的那样包装它;或确保文件位于类路径中的某个位置并改用 getResourceAsStream 。如果相关程序恰好是 web 应用程序,则最后一种方法是推荐的方法,请参阅stackoverflow.com/questions/2308188/…

标签: java eclipse csv filereader


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我会通过程序参数传递 .CSV 文件的路径,如下所示:

    java MyCsvReader C:\Users\Me\file.csv


    然后在您的 main 方法中通过 args 访问传递的参数:

    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]));
        // ...
    }
    

    【讨论】:

      【解决方案3】:

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

      类似:

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

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

      【讨论】:

        猜你喜欢
        • 2022-06-15
        • 1970-01-01
        • 2013-02-19
        • 2011-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-03
        • 2011-10-17
        相关资源
        最近更新 更多