将文本附加到特定位置的现有文件

时间:2017-05-23 05:10:41

标签: java netbeans io java-8 netbeans-8

我正在为一个项目编写一个游戏并且它顺利进行但我有一个小问题,它使用一个文本文件来保存程序关闭后已解锁的成就,我不知道如何编辑它。虽然我可以使用一些检查重写整个事情以查看解锁的内容,然后使用if else语句将Y放入重写中,然后替换它,这将需要大量的代码行,而不是像现在写出成就,并且可能是,尽管不是那么糟糕,比将所需行中的文本替换为文本文件更耗费资源。

所以给定这个结构(数字附加到成就,下面的字母告诉我的程序是否解锁,N表示没有Y表示是)如果我解锁成就2,例如,我将如何搜索看起来很好的文本文件像这样...

01
N
02
N
03
N
04
N
05
N
06
N
07
N
08
N
09
N
10
N
11
N
12
N

表示02,然后使用java 1.8代码编辑下面的行从N到Y. (该文件名为Achievements.txt,我有一个名为longPath的变量,它是存储游戏的动态目录,因此,为了示例代码,目录将作为

工作。
(longPath+"\\Achievements.txt")

离。

Scanner scan = new Scanner(new File(longPath+"\\Achievements.txt"));

是我用来在代码中确定哪些成就被解锁的代码的开始(扫描程序代码工作正常btw)

编辑:重写文件不是很可行,我现在要睡觉了,所以明天早上我会在晚上8点10分做出回应

2 个答案:

答案 0 :(得分:1)

如果您只是用Y替换N,即不写额外信息,则RandomAccesFile应该适合您

请参阅此link以获取writeChars的示例

答案 1 :(得分:0)

尝试查看这篇文章:https://www.mkyong.com/java/how-to-append-content-to-file-in-java/

根据它,当您实例化一个新的FileWriter类时,有一个构造函数,您可以在其中将布尔值设置为“true”,以便将其附加到文件而不是覆盖它。

例如:

File file = new File(longPath+"\\Achievements.txt");
FileWriter fw = new FileWriter(file, true);
fw.write("This string should append to the end of the file");

我现在无法测试这个。