这是我的项目架构:
我想在文件“file.txt”上写入,我尝试使用BufferedWriter和PrintWriter但它无法正常工作。
我的 BufferedWriter 代码:
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("FileTLV.txt").getFile());
try{
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write("I want to write a String");
writer.close();
}catch (IOException e) {
e.printStackTrace();
}
我的 PrintWriter 代码:
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("FileTLV.txt").getFile());
try{
PrintWriter writer = new PrintWriter(new FileWriter(file));
writer.print("I want to print a String");
writer.flush();
writer.close();
}catch (IOException e) {
e.printStackTrace();
}
代码执行没有任何错误。
最佳答案
应用程序资源是只读的。您不能写信给他们。
如果您想覆盖应用程序资源,请将内容写入新位置(例如 temporary file 或用户主目录下的某个位置),并编写一些代码来在返回之前检查该文件您的内置应用程序资源。
此外,URL 的 getFile() 方法不会将 URL 转换为有效的文件名。它返回 URL 的路径和查询部分,所有百分比转义都完好无损,因此,如果您从完整路径包含 URL 中不允许的任何字符的目录或 .jar 运行,则结果将不可用。应避免该方法。 (方法名称来自于 java.net.URL 是 Java 1.0 中存在的一个类,当 Java 1.0 发布时,大多数 URL 实际上引用了物理文件。)
关于java - java写文本文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50744455/