将文本附加到已存在的文件的某个特定位置

问题描述:

我正在为一个项目编写游戏,并且顺利进行,但我遇到了一个小问题,它使用文本文件保存在程序后解锁了哪些成就关闭,我不知道如何编辑它。尽管我可以使用一些检查来重写整个事物,以查看已解锁的内容,然后使用if语句将Y重写为重写,然后替换它,但这需要大量的代码行,并且不如现场写作成果,并且可能是,虽然没有那么严重,但更耗费资源,而不是将文本替换为期望的行,放入文本文件中。将文本附加到已存在的文件的某个特定位置

因此给出这个结构(数字附于成就,下面的字母告诉我的程序是否解锁,N表示否意味着是)如果我解锁成就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然后编辑下面的行从N到Y,使用Java 1.8代码。 (文件名为Achievements.txt,我有一个名为longPath变量,它是游戏的存储位置的动态目录,所以示例代码的目的目录将作为

(longPath+"\\Achievements.txt") 

前。

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

是我使用来确定代码的成就解锁代码(扫描代码工作就好了BTW)开始

编辑:重写文件是不是很feasable,我去现在睡觉,所以我会明天早上在〜8:10 Ester响应n次

+0

的例子吗? –

+0

什么都不是,因为我发现的所有内容都是将文本添加到文件末尾,对我来说,例如,删除一切到02,重写几乎与完全重写文件一样糟糕,并在每次解锁成果时替换它@Scary Wombat –

+0

你为什么要保存未解锁的成就。你可以简单地存储只有解锁的文件,如果你没有在文件中找到未解锁的成就。 –

如果你只是为Y,即不写额外的信息用N然后RandomAccesFile应该为你工作

看到这个link为你尝试过什么到目前为止writeChars

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

根据它,当你实例化一个新的FileWriter类,有一个构造函数,你可以为了设置一个布尔值,以“真”为它追加到一个文件而不是覆盖它。

例如:

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"); 

我当时无法对此进行测试。

+0

感谢您的时间,但这正是我一直在寻找的。我需要能够在文件中间运行:|如果你知道如何做到这一点,那就是我所需要的。 @一个。 CUCCI –