2016-03-14 113 views
0

下面給出我的項目結構, My Project structure我怎麼能在我的項目文件夾閱讀資源,但不是我的源文件夾

如何訪問findLoginDetails.txt? 目前,我有

public static String getQueryFromExternalFile(final String path) { 
String path1 = "src/main/resources/sql/C0001/findLoginDetails.txt"; 
String query = ""; 
try { 
    BufferedReader br = new BufferedReader(new FileReader(path1)); 
    StringBuilder sb = new StringBuilder(); 
    String line = br.readLine(); 
    while (line != null) { 
    sb.append(line); 
    sb.append(System.lineSeparator()); 
    line = br.readLine(); 
    } 

    query = sb.toString(); 
    br.close(); 
} catch (Throwable e) { 
    query = ""; 
    e.printStackTrace(); 
} 
return query; 

}

但它不工作。任何想法爲什麼它不工作?

+1

檢查它正在使用的路徑:do Path p = Paths.get(path1); \t System.out.println(p.toAbsolutePath()); –

+0

我得到C:\ pleiades \ eclipse \ src \ main \ resources \ sql \ C0001 \ findLoginDetails.txt 所以這就是它無法找到文件的原因。我如何將它指向正確的目錄?基本上,我只是希望它從項目的根目錄開始搜索。 – paaaaat

+0

不,它會在爲查詢分配值之前返回錯誤src \ main \ resources \ sql \ C0001 \ findLoginDetails.txt(系統找不到指定的路徑)。 – paaaaat

回答

2

你最好從classpath不是項目的根文件夾閱讀它。我假設resources文件夾在您的構建路徑上。這會給你你想要的便攜性。

使用

BufferedReader r = new BufferedReader(
    new InputStreamReader(MyClass.class.getClassLoader().getResourceAsStream(
    "sql/C0001/findLoginDetails"))); 

其中 'MyClass的' 是你的類的名稱。

請參閱How to really read text file from classpath in Java以獲得更好的理解。

+0

這工作。謝謝 – paaaaat

0

你試過把絕對路徑?

如果在Windows嘗試把「d:\路徑\爲\文件」

+0

是的,我做了,而且這個有效,但是,我不想那麼做。我希望它從項目的目錄中看。 – paaaaat

+0

@paaaaat你可以試試../? – user2214297

+0

其他選項將設置類路徑或路徑變量。 – user2214297

相關問題