我有一個文件位於我的類路徑中,例如, com/path/to/file.txt
。我需要加載或引用此文件作爲java.io.File
對象。這是因爲我需要使用java.io.RandomAccessFile
來訪問文件(文件很大,我需要尋找某個字節的偏移量)。這可能嗎? RandomAccessFile
的構造函數需要一個File
實例或String(路徑)。如何從類路徑加載/引用文件作爲File實例
如果還有另一種解決方案尋求某個字節偏移量並讀取該行,我也對此表示贊同。
我有一個文件位於我的類路徑中,例如, com/path/to/file.txt
。我需要加載或引用此文件作爲java.io.File
對象。這是因爲我需要使用java.io.RandomAccessFile
來訪問文件(文件很大,我需要尋找某個字節的偏移量)。這可能嗎? RandomAccessFile
的構造函數需要一個File
實例或String(路徑)。如何從類路徑加載/引用文件作爲File實例
如果還有另一種解決方案尋求某個字節偏移量並讀取該行,我也對此表示贊同。
嘗試獲得一個網址的擱置你的classpath資源:
URL url = this.getClass().getResource("/com/path/to/file.txt")
然後使用接受URI的構造函數創建一個文件:
File file = new File(url.toURI());
哇!這是快速和正確的。謝謝! – jake 2010-12-05 17:01:49
任何機會,你可以用大綠色的勾號接受這個答案? :) – joelittlejohn 2010-12-06 13:12:03
對不起,我還不能投票。 – jake 2010-12-13 03:39:48
或者使用直接使用資源的InputStream
絕對CLASSPATH路徑(以/
斜槓字符開頭):
getClass().getResourceAsStream("/com/path/to/file.txt");
或相對路徑CLASSPATH(如果你正在寫的類是在同一個Java包的資源文件本身,即com.path.to
):
getClass().getResourceAsStream("file.txt");
這也適用,並且不需要/路徑/到/文件URI轉換。如果該文件在類路徑中,則會找到它。
File currFile = new File(getClass().getClassLoader().getResource("the_file.txt").getFile());
我覺得這是一個行代碼作爲最有效和最有用:
File file = new File(ClassLoader.getSystemResource("com/path/to/file.txt").getFile());
就像一個魅力。
工作端到端的例子是這裏的細節:[https://stackoverflow.com/questions/1464291/how-to-really-read-text-file-from-classpath-in-java/49120666#49120666] – ravibeli 2018-03-05 22:43:36