gpt4 book ai didi

java - 如何读取和编辑序列化文件中的文本?

转载 作者:太空宇宙 更新时间:2023-11-04 06:59:58 27 4
gpt4 key购买 nike

我有一个已序列化并写入文件的对象。

在将文件反序列化回对象实例之前,我想恶意编辑文件中的txt。

    //FILE TAMPER
//Lexical block: Tamper
{
String output = null;
//Lexical block make output
{
LinkedList<String> lls = new LinkedList<String>();
//Lexical block: Reader
{
BufferedReader br = new BufferedReader(new FileReader(fileString));
while (br.ready()) {
String readLine = br.readLine();
lls.add(readLine);
}
br.close();
}
//Lexical block: manipulate
{
//Henry Crapper
final String[] llsToArray = lls.toArray(new String[lls.size()]);
for (int i = 0; i < llsToArray.length; i++) {
String line = llsToArray[i];
if (line.contains("Henry")) {
line = line.replace("Henry",
"Fsekc");
llsToArray[i] = line;
}
if (line.contains("Crapper")) {
line = line.replace("Crapper",
"Dhdhfie");
llsToArray[i] = line;
}

lls = new LinkedList<String>(Arrays.asList(llsToArray));
}
}

//Lexical block: write output
{
StringBuilder sb = new StringBuilder();
for (String string : lls) {
sb.append(string).append('\n');
}
output = sb.toString();
}
}
//Lexical block: Writer
{
BufferedWriter bw = new BufferedWriter(new FileWriter(fileString));
bw.write(output);
bw.close();
}
}

但是编辑的文件不正确,并且包含一些不寻常的字符。

//Before
¨Ìsr&Snippets.Parsed.EmployeeSerialization0I
bankBalanceLnametLjava/lang/String;xp•Åt
Henry Crappe

//After
ÔøΩÔøΩsr&Snippets.Parsed.EmployeeSerialization0I
bankBalanceLnametLjava/lang/String;xpÔøΩÔøΩt
Fsekc Dhdhfie

我猜存在某种不可读的字符问题或其他问题?

<小时/>

Answer continued in a new question is here

最佳答案

包含序列化对象实例的文件是二进制文件:您不应该使用 BufferedWriter 编辑它。例如,使用 RandomAccessFile 对其进行编辑。

如果您想知道为什么,Writer 中使用的字符集无法与字节一对一映射。保存所有文件也会改变意想不到的位置。

关于java - 如何读取和编辑序列化文件中的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22232096/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com