2016-08-19 71 views
2

我試圖創建一個程序來從任何Windows計算機上的下載文件夾中讀取CSV文件,並且無法使Java BufferedReader找到該文件。在java中使用絕對路徑讀取CSV文件給出異常

我讀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並且很容易,文件出現了。

我想知道是否有這樣的事情是可能的,如果有一些方法來查找和閱讀此文件。

謝謝你的幫助!

回答

4

%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)); 
+1

更妙的是使用系統無關的路徑分隔符變量:'String pathSeparator = File.separator; String path = userHome + pathSeparator +「Downloads」+ pathSeparator +「quotes.csv」;' – JD9999