我正在为一个项目编写一个游戏并且它顺利进行但我有一个小问题,它使用一个文本文件来保存程序关闭后已解锁的成就,我不知道如何编辑它。虽然我可以使用一些检查重写整个事情以查看解锁的内容,然后使用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分做出回应答案 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");
我现在无法测试这个。