我正在尝试读取一个位于eclipse src
文件夹中的文件,但是一直找不到该文件。
public static void main(String[] args) {
try {
File file = new File("/PMIS/src/config/PMIS_Request_Template.xml");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while(line != null) {
sb.append(line);
sb.append("\n");
}
fr.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
答案 0 :(得分:0)
以斜杠开头的路径表示绝对路径,因此在Windows下,该目录类似于名为PMIS
的驱动器,而在Linux下,则是已挂载文件系统中具有该名称的基本文件夹。
实际上,您想打开一个相对于您的工作目录的文件,因此必须以./PMIS/src/config/PMIS_Request_Template.xml
(开头的点表示当前工作目录)或PMIS/src/config/PMIS_Request_Template.xml
(不带前导)开头。削减)。
除此之外,您还想验证当前的工作目录是否与您期望的一样(即eclipse文件夹)。例如,您可以在this way中找到它。相应地调整路径,或者更好地调整路径,使其灵活并允许从args
移交,因此启动此程序的人员可以指定相对位置或绝对位置。
使用maven时的侧节点:如果要静态保存此文件,则应将其放入与resources
文件夹相同级别的src
文件夹中,因为其中不包含该文件Java源代码。然后使用Maven资源加载逻辑-例如,检出this thread。
而且,Maven的标准文件夹结构有些不同。因此,如果您没有手动修改这些设置,则应解决此问题:将src
移至main/src
并将资源文件移至main/resources
,否则以后会遇到麻烦。
答案 1 :(得分:0)
/PMIS/src/config/PMIS_Request_Template.xml 将此行替换为: //PMIS//src//config//PMIS_Request_Template.xml
答案 2 :(得分:0)
我首先列出一些问题:
File file = new File("/PMIS/src/config/PMIS_Request_Template.xml");
该文件可以与类一起驻留,如类路径上的 resource 。
然后它不是文件(磁盘系统文件),而是可能在应用程序jar中。现在它可能仅适用于IDE,因为src
用于源代码。while(line != null) { ... }
缺少br.readLine();
将XML放置在应用程序的一部分(资源)中。如果应用程序已交付 作为罐子,用7zip等打开它,然后检查路径。
try {
URL xmlURL = YourClass.class.getResource("/config/PMIS_Request_Template.xml");
// xmlURL will be null when the path is incorrect.
Path path = Paths.get(xmlURL.toURI());
byte[] xmlBytes = Files.readAllBytes(path);
String xml = new String(xmlBytes, StandardCharsets.UTF_8);
} catch (Exception ex) {
ex.printStackTrace();
}