java - 写文本文件不起作用java
问题描述
这是我的项目架构:
我想在文件“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();
}
代码执行没有任何错误。
解决方案
应用程序资源是只读的。你不能给他们写信。
如果您想覆盖您的应用程序资源,请将内容写入新位置(例如临时文件或用户主目录下的某个位置),并编写一些代码检查该文件,然后再返回您的内置应用资源。
此外,URL 的 getFile() 方法不会将 URL 转换为有效的文件名。它返回 URL 的路径和查询部分,所有百分比转义都完好无损,因此如果您从完整路径包含 URL 中不允许的任何字符的目录或 .jar 运行,则结果将不可用。应该避免这种方法。(方法名称来源于 java.net.URL 是 Java 1.0 中的一个类,而当 Java 1.0 发布时,大多数 URL 实际上确实引用了物理文件。)
推荐阅读
- django - Django Elasticsearch dsl drf OR 查询
- vba - 发送带有多个附件的电子邮件
- javascript - Discord.js for 循环行为异常
- c# - 重新映射 JSON Schema 中的无效属性名称
- node.js - http服务器中的NodeJS err-ssl-protocol-error
- react-native - React Apollo fetch 一次
- c++ - Cmake - 致命错误 LNK1104:无法打开文件'libboost_date_time-vc142-mt-gd
- javascript - 当我将输入值与 csv 列进行比较时,为什么会得到未定义的值
- javascript - 分离 v-if 和 v-for Vue.js 3
- excel - 在 excel 表格公式中解析困难的日期/时间字符串