任何人都可以告诉我如何通过插件项目识别文件。 我有一个pom。我的项目路径中的xml文件,如" AA / pom.xml"我能够复制这个文件并在另一个位置创建一个新文件。 但是当我在插件项目中做同样的事情时,我收到了FileNotFoundException。
下面的代码适用于简单的java项目,但不适用于eclipse插件项目。
private void createPomFile(String location, String projectName, String string) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("\\pom.xml"), "UTF-8"));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(location + projectName + string), "UTF-8"));
String line = null;
while ((line = reader.readLine()) != null) {
writer.write(line);
writer.write("\n");
}
// Close to unlock.
reader.close();
// Close to unlock and flush to disk.
writer.close();
}
堆栈跟踪:
java.io.FileNotFoundException: \pom.xml (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at createservicestemplate.wizards.SampleNewWizard.createPomFile(SampleNewWizard.java:320)
at createservicestemplate.wizards.SampleNewWizard.doFinish(SampleNewWizard.java:288)
at createservicestemplate.wizards.SampleNewWizard.access$0(SampleNewWizard.java:118)
at createservicestemplate.wizards.SampleNewWizard$1.run(SampleNewWizard.java:86)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
答案 0 :(得分:0)
您必须删除\\
参数中的FileInputStream
。这样Java代码就直接在项目文件夹下搜索文件。
在您的代码中,java类在放置工作空间的目录中搜索pom.xml。
例如,如果工作区位于&#34; D:&#34;驱动,然后在\\pom.xml
中使用FileInputStream
执行代码,然后您的代码搜索D:\\ pom.xml的存在。因此,pom.xml作为AA \\ pom.xml存在于您的项目中,抛出异常。
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("pom.xml"), "UTF-8"));
用户需要后的UPDATE:对于Eclipse插件
对于eclipse插件,以下内容可行。在您的最新评论之后想出来。我在Eclipse插件中检查过相同的内容,它对我有用。
try {
String line = null;
FileInputStream fi = (FileInputStream) your_class_name.class.getResourceAsStream("/pom.xml");
BufferedReader bf = new BufferedReader(new InputStreamReader(fi));
while((line = bf.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 1 :(得分:0)
这一行
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("\\pom.xml"), "UTF-8"));
说:&#34;在当前磁盘驱动器的根目录中读取名为pom.xml的文件&#34; (这就是\的意思)。
检查当前目录是什么以及pom文件在哪里:
System.out.println(" Working directory is "+ new File("temp.txt").getCanonicalPath());