【问题标题】:Reading a CSV file using an absolute path in java giving exception在java中使用绝对路径读取CSV文件给出异常
【发布时间】:2016-12-27 03:09:48
【问题描述】:

我试图创建一个程序以从任何 Windows 计算机上的下载文件夹中读取 CSV 文件,但无法通过 Java BufferedReader 找到该文件。

我读到 java 可以处理绝对路径,所以我做到了:

File f = new File("%systemdrive%\\users\\%username%\\Downloads\\quotes.csv");
BufferedReader br = new BufferedReader(new FileReader(f));

这引发了一个带有消息的 IOException:

 %systemdrive%\users\%username%\Downloads\quotes.csv (The system cannot find the path specified)

我通过在File Explorer 中输入相同的路径来确保该文件存在,并且很容易,该文件出现了。

我想知道这样的事情是否可行,是否有某种方法可以找到并读取此文件。

感谢您的帮助!

【问题讨论】:

    标签: java csv debugging bufferedreader


    【解决方案1】:

    %systemdrive%%username% 似乎是文件资源管理器扩展的环境变量。

    您可能会发现 SO (How to find out operating system drive using java?) 中的其他条目对获取 %systemdrive 的值很有趣。同样,您可以对System.getenv 应用相同的调用来获取用户名。

    FWIW,here 在 Windows 中有一个环境变量列表。注意%HOMEPATH% 环境变量,它指向当前用户的主目录。

    有了所有这些前提,您可以考虑使用以下代码来解决您的问题:

    String userhome = System.getenv ("HOMEPATH");
    File f = new File(userhome + "\\Downloads\\quotes.csv");
    BufferedReader br = new BufferedReader(new FileReader(f));
    

    【讨论】:

      【解决方案2】:

      你可以试试这样的:

      String userHome = System.getProperty("user.home");
      String path = userHome + "\\Downloads\\quotes.csv";
      File f = new File(path);
      BufferedReader br = new BufferedReader(new FileReader(f));
      

      【讨论】:

      • 最好使用独立于系统的路径分隔符变量:String pathSeparator = File.separator; String path = userHome + pathSeparator + "Downloads" + pathSeparator + "quotes.csv";
      猜你喜欢
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      相关资源
      最近更新 更多