java - 替换文本文件的一行
问题描述
我正在尝试读取文本文件的第一行,然后用不同的内容替换该行。第一行是一个 int 值,所以首先我将其更改为当前值的 +1。
BufferedWriter writer = new BufferedWriter( new FileWriter("file.txt", true));
BufferedReader reader = new BufferedReader( new FileReader("file.txt"));
String amount;
amount = reader.readLine();
int amount1 = Integer.parseInt(amount);
amount1 = amount1 + 1;
String amount2 = String.valueOf(amount1);
amount = amount.replace(amount, amount2);
writer.write(amount);
它不会用新值替换原始值,而是将新值写入旧值旁边。
解决方案
更改文本文件时必须替换整个文件。
Path path = Paths.get("file.txt");
Charset charset = Charset.defaultCharset();
List<String> lines = Files.readAllLines(path, charset);
String firstLine = lines.get(0);
...
lines.set(0, firstLines);
Files.write(path, lines, charset);
但是,如果您注意第一行的长度永远不会改变,并且有足够的空间,您可以使用 a RandomAccessFile
,并且只更改那段文本。
推荐阅读
- go - 使用 GORM 解析 json 时重用 struct
- python - python - 如何在python函数内的多个新创建的数据帧中返回一个非空数据帧?
- node.js - 在 React 中使用 npm 包时出现问题 - 说“TypeError:require is not a function”
- node.js - 如何创建应排除无关 dto 属性的单元测试?
- r - geom_segment 箭头设置 - 头部与线的宽度相同
- node.js - 将节点 js 网站托管到 Azure。默认路径/不工作
- android-studio - 通过选定的应用程序过滤 logcat *并*在 Android Studio 中添加自定义过滤器
- java - Reactor - 如何避免递归?
- python-3.x - yaml 转储没有引号的 python 字典
- python - 使用字典的值过滤数据框