2017-05-31 84 views
2

我有一個java web應用程序項目,它由一個java servlet和一個經典的java文件組成。該servlet調用java文件中實現的方法。Tomcat7找不到我的txt文件

其中一種方法涉及從文件讀取並將該文件的內容放入數組中。然而,在嘗試了BufferedReader,InputStream和classloader.getResource()之後,我仍然無法使它能夠找到txt文件。

在Tomcat目錄中,java文件加上txt文件位於/ WEB-INF/classes中。所以我不知道它爲什麼找不到文件..

任何人都可以告訴我嘗試從該文件讀取的最佳方式嗎?

在此先感謝。

編輯:這是我最近嘗試從它讀取,嘗試從中讀取,導致FileNotFound異常。

ClassLoader cl = testClass.class.getClassLoader(); 
File file = new File(cl.getResource("text.txt").getFile()); 

Scanner sc = new Scanner(file); 
+0

請將您的代碼包含在您獲取文件的位置。 – Alfabravo

+4

[Java資源作爲文件]的可能重複(https://stackoverflow.com/questions/676097/java-resource-as-file)和https://stackoverflow.com/questions/4359876/how-to-load-參考文件作爲一個文件實例從類路徑 – Arpit

+0

@Arpit嘗試了所有這些解決方案,他們沒有幫助我。謝謝 –

回答

0

沒有領先/

ClassLoader cl = testClass.class.getClassLoader(); File file = new File(cl.getResource("text.txt").getFile());

的text.txt應該是在WEB-INF /班/ PPP /的text.txt其中PPP是testClass的包路徑。

憑藉領先/

ClassLoader cl = testClass.class.getClassLoader(); File file = new File(cl.getResource("/text.txt").getFile());

的text.txt中搜索關於類路徑(Tomcat的/ lib下,WEB-INF/lib下,WEB-INF /類等)。

+0

哦,謝謝你,我實際上已經嘗試了你的答案的第一部分與文本,TXT在正確的位置,它仍然無法找到該文件。但我只是意識到我沒有一個命名包,它只是(在Eclipse中的默認包)。所以我想知道是否會造成問題? 我會嘗試它與領先/。一個問題:當你說它在類路徑上被搜索時。這是否意味着它沒有特定的位置,它可能位於您列出的任一目錄中(即tomcat/lib,WEB-INF/lib,WEB-INF/classes等)? –

+0

我不確定tomcat的classpath的所有目錄,但我知道我列出的是。嘗試創建日誌文件file.getCanonicalPath()以查看使用的確切路徑。 –

+0

我在WEB-INF/classes目錄中用我的文本文件試過了你的領導/解決方案,它對我很有幫助!非常感謝您的幫助!!!! –

0

你可以試試這個:

File file = new File(ClassLoader.getSystemResource("/path/to/file.txt").getFile()); 
+0

謝謝!只是試過,現在theres沒有filenotfound錯誤,而是一個nullpointerexception錯誤。你偶然有什麼想法? –