Java 如何读取项目文件夹下而不是源文件夹上的资源
鉴于我下面的项目结构, 如何访问findLoginDetails.txt? 目前,我有Java 如何读取项目文件夹下而不是源文件夹上的资源,java,file,Java,File,鉴于我下面的项目结构, 如何访问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
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;
}
但它不起作用。知道它为什么不起作用吗?你试过把绝对路径放进去吗
如果在Windows中尝试放置“D:\path\to\file”是否尝试放置绝对路径
如果在Windows中尝试将“D:\path\to\file”放到项目根文件夹中,那么最好从类路径中读取它。我假设
resources
文件夹位于构建路径上。这将为您提供所需的便携性
使用
其中“MyClass”是您的类的名称
请参阅以获得更好的理解。从类路径而不是从项目根文件夹中阅读它更好。我假设
resources
文件夹位于构建路径上。这将为您提供所需的便携性
使用
其中“MyClass”是您的类的名称
请参阅以获得更好的理解。查看它使用的路径:do path p=Paths.get(path1);System.out.println(p.toAbsolutePath());我得到了C:\pleiades\eclipse\src\main\resources\sql\c001\findLoginDetails.txt,所以它找不到该文件。如何将其指向正确的目录?基本上,我只想让它从项目的根目录开始搜索。不,它返回一个错误src\main\resources\sql\c001\findLoginDetails.txt(系统找不到指定的路径),然后再为查询分配一个值。这个文件是由用户修改的吗?如果是这样,它不应该在src/resources文件夹中,而是在类路径上的文件夹中。然后,您可以通过命令行,或者在Eclipse中,通过运行配置的类路径部分,将文件夹添加到类路径中。如果用户无法配置,那么您确实应该将src/resources设置为源文件夹;System.out.println(p.toAbsolutePath());我得到了C:\pleiades\eclipse\src\main\resources\sql\c001\findLoginDetails.txt,所以它找不到该文件。如何将其指向正确的目录?基本上,我只想让它从项目的根目录开始搜索。不,它返回一个错误src\main\resources\sql\c001\findLoginDetails.txt(系统找不到指定的路径),然后再为查询分配一个值。这个文件是由用户修改的吗?如果是这样,它不应该在src/resources文件夹中,而是在类路径上的文件夹中。然后,您可以通过命令行,或者在Eclipse中,通过运行配置的类路径部分,将文件夹添加到类路径中。如果用户无法配置它,那么您真的应该将src/resources作为源文件夹。是的,我做了,这一个可以工作,但是,我不想这样做。我想让它从项目的目录中查看。@paaaat您能试试吗../?其他选项将是设置类路径或路径变量。是的,我这样做了,这个可行,但我不想这样做。我想让它从项目目录中查看。@paaaat您能试试吗?/?其他选项将是设置类路径或路径变量。
BufferedReader r = new BufferedReader(
new InputStreamReader(MyClass.class.getClassLoader().getResourceAsStream(
"sql/C0001/findLoginDetails")));