[英]FileNotFoundException in src/main/resources
我在src / main / resources下的maven項目中放置了一個文件,文件名只是temp.txt。
當我嘗試打開文件時:
BufferedReader br = new BufferedReader(new FileReader(new File("./temp.txt")));
我收到一個錯誤:
Exception in thread "main" java.io.FileNotFoundException: \temp.txt
src / main / resources下的所有文件都放在maven下的classpath的根文件夾中。 那么為什么程序無法在這里找到文件呢?
如果您要將文件打包在類路徑中,那么請從類路徑中讀取它。
Maven結構
src
main
resources
file.txt
構建之后,文件將放置在類路徑的根目錄中。 所以使用
InputStream is = getClass().getResourceAsStream("/file.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
file.txt
前面的/
將帶你到這個類所在的任何包的根目錄。
UPDATE
測試示例
package com.underdogdevs.stackoverflow;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class TestResourceFile {
public static void main(String[] args) throws IOException {
InputStream is = TestResourceFile.class.getResourceAsStream("/test.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
}
把它作為你的道路:
BufferedReader br = new BufferedReader(new FileReader(new
File("src/main/resources/temp.txt")));
在Jenkins中設置集成測試時遇到此問題。
該問題是由名稱中包含空格的文件夾中的作業引起的。 因此,Jenkins沒有一個名為foo bar
的工作區文件夾,而是使用FileNotFoundException
創建了foo%20bar
並且所有測試都失敗了。
解決方案只是重命名您的文件夾,因此它沒有任何空格。
Maven將/src/main/resouces/
下的文件放入類路徑的默認包中。 因此,您可以通過類加載器加載:
InputStream in = getClass().getResourcesAsStream("temp.txt")
有關更多信息,請參閱Class#getResoucesAsStream 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.