2013-07-10 50 views
0

因此,我試圖從我的Eclipse項目中的配置文件讀入,但無法找到該文件。這是我的代碼。Eclipse無法在bin目錄中找到文件

public void readConfigFile() { 

    //URL url = Test.class.getClassLoader().getResource("myfile.txt"); 
    //System.out.println(url.getPath()); 

    URL url = getClass().getResource("/config"); 
    System.out.println(url); 

    try { 
     BufferedReader read = new BufferedReader(new FileReader(url.toString())); 

     //read in values for constants from config file 
     System.out.println(BASE_URL); 
     BASE_URL = read.readLine().split("\t")[1]; 
     System.out.println(BASE_URL); 

     read.close(); 
    } 
    catch (Exception e) 
    { 
     System.out.println("Read from config file failed. Terminating program"); 
     System.out.println(e); 
     System.exit(1); 
    } 
} 

當我運行,它打印爲url變量: 

/用戶/ MYNAME /開發/工作區/ New_API /斌/配置

但它運行時,無法找到文件BufferedReader命令。我得到:

Read from config file failed. Terminating program 
java.io.FileNotFoundException: 
file:/Users/myname/Development/workspace/New_API/bin/config.txt (No such file or directory) 

當我轉到我的代碼的bin目錄,但是,配置文件在那裏。在root bin目錄中,遵循URL給出的確切路徑。什麼東西搞砸了Eclipse?

+0

你必須在絕對位置'/用戶/ MYNAME /開發/工作區/ New_API /斌/ config'目錄?我不認爲它不應該是/home/user.name/etcetcetc –

+0

你有沒有試過將你的文件複製到src文件夾的根目錄? –

+1

不要使用FileReader,使用具有'InputStreamReader'的'url.openStream()'。 –

回答

1

從類加載器獲取資源時,您從類路徑中獲取資源,而不是從文件系統獲取資源。如果您的應用程序被打包爲jar,您將無法通過FileFileInputStream API訪問資源,因爲資源是歸檔的一部分。相反,你可以訪問資源的輸入流,像這樣:

URL url = getClass().getResource("/config"); 

BufferedReader read = new BufferedReader(new InputStreamReader(url.openStream())); 
// more... 
+0

非常感謝!這工作完美。 – user2433924

相關問題