在阅读this问题后,我在从使用IntelliJ构建的maven项目的类路径中读取文件时尝试了以下内容:
public class testTemplateManager {
private TemplateManager templateManager;
private String m_includePath;
public void createTemplateManager() {
String relativePath = "/src/main/java/com/eprosima/templates";
String fileName = "idlTypes.stg";
String filePath = relativePath + "/" + fileName;
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream res = classLoader.getResourceAsStream(var4);
if(res == null) {
classLoader = this.getClass().getClassLoader();
res = classLoader.getResourceAsStream(var4);
}
if(res != null) {
return new BufferedReader(getInputStreamReader(res));
}
}
无论 relativePath (相对于项目根目录),资源 res 始终为null。我试图使用以下路径,结果相同:
String relativePath = "src/main/java/com/eprosima/templates";
String relativePath = "src/main/java/com.eprosima/templates";
类路径如下所示:
我需要阅读位于 / src / main / java / com / eprosima / templates 中的模板文件。
答案 0 :(得分:1)
String relativePath = "/src/main/java/com/eprosima/templates";
问题出在这里。 src/main/java
不属于您的类路径。它在运行时不存在任何方式。它应该是
String relativePath = "/com/eprosima/templates";
答案 1 :(得分:-1)
试试这个
String relativePath = "./src/main/java/com/eprosima/templates";
例如,我的项目包含com.example.main包。在那个包中,我有“FileTest.java”,代码如下:
package com.example.main;
import java.io.File;
public class FileTest {
/**
* @param args
*/
public static void main(String[] args) {
File file = new File("./src/com/example/main/FileTest.java");
if (file.exists()) {
System.out.println("existed!");
} else {
System.out.println("not exists!");
}
}
}
然后运行此文件输出打印“存在!”
希望这有帮助!