使用Java读取CSV文件时给定绝对路径引发异常

3

我正在尝试创建一个程序,以从任何 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)

我确保这个文件存在,通过在文件资源管理器中输入相同的路径,很容易就能找到这个文件。

我想知道是否有可能找到并读取这个文件,如果可以,有没有什么方法。

感谢任何帮助!

2个回答

4
%systemdrive%%username%似乎是由文件资源管理器展开的环境变量。
你可能会发现SO中的另一个条目(How to find out operating system drive using java?)有趣,可以获取%systemdrive的值。同样,您可以将相同的调用应用于System.getenv以获取用户名。
FWIW,在Windows中有一些环境变量的列表:here,请注意%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));

1
更好的做法是使用系统无关的路径分隔符变量:String pathSeparator = File.separator; String path = userHome + pathSeparator + "Downloads" + pathSeparator + "quotes.csv"; - JD9999

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接