我有以下代码在文件上写入一个字符串(相对路径加载):
void writeFile(String string){
try {
//ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
ClassLoader classLoader = getClass().getClassLoader();
File newFile = new File(classLoader.getResource("conf/passwords.txt").getFile());
//Path of "passwords.txt" where it writes the info
System.out.println("ABSOLUTE PATH: " +newFile.getAbsolutePath());
FileWriter flux = new FileWriter(newFile);
BufferedWriter writer = new BufferedWriter (flux);
writer.write(string);
writer.close();
} catch (IOException e) {
System.out.println("ERROR on file writing.\n" +e.getMessage());
e.printStackTrace();
}
}
它可以工作,但字符串不会写在我位于项目路径上的原始文件中,如下所示:src / conf / passwords.txt
而不是这个,字符串保存在以下路径中:C:\ Users \ becario01 \ workspace.metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps \ searchLef \ WEB-INF \ classes \ CONF \ password.txt的
我想在原始文件上写下字符串,以便在我工作时工作时轻松显示。
我会非常感谢任何有用的回复。
问候。
答案 0 :(得分:0)
总而言之,看起来您在Eclipse WST下运行Tomcat,您的webapp在某个时刻写出了一个文件,并且您希望该文件出现在Eclipse项目源代码树中,您可以在其中轻松地重新加载/查看它。在这种情况下,正如您所看到的,使用类加载器获取文件的位置将导致它出现在webapp部署的运行时中,而不是出现在Eclipse项目源中。
您要做的是以某种方式将Eclipse项目位置传递给您的webapp,然后使用该绝对路径打开您的File
。有很多方法可以做到这一点 - 一个简单的方法是更改Eclipse Tomcat启动以添加JVM属性,例如: -Declipse.project.path=${workspace_loc}/searchLef
,然后读取该系统属性并将其用作文件的基本路径,添加相对路径src/conf/passwords.txt
。手动刷新项目后,该文件将显示在源树中。