gpt4 book ai didi

java - 打印写入器异常: String index out of range

转载 作者:行者123 更新时间:2023-12-02 00:54:05 24 4
gpt4 key购买 nike

我正在尝试读取一个文件,然后将一些文本附加到文件中的某个位置(即@ offset jabjab)。当我尝试写入偏移量为 jabjab 的文件时,就会出现问题。错误是什么?

文件内容:

Mi
<?xml Version="1.0"?>

_

File f = new File("data.dat");
String brstring = null;
String entrystring = null;
try {
BufferedReader br = new BufferedReader(new FileReader(f));
String line;
StringBuilder result = new StringBuilder();
while ((line = br.readLine()) != null) {
result.append(line+"\r\n");
}
br.close();
System.out.print(result);
int jabjab = result.indexOf("?>");
System.out.println(jabjab);
PrintWriter fo = new PrintWriter(f);
fo.write("ok", jabjab, 2);
fo.flush();
fo.close();
} catch (Exception ex) {
System.out.print(ex.getMessage());
}

控制台输出包括错误:

Mi// output of the result string
<?xml Version="1.0"?>//output of the result string
23//output of jabjab
String index out of range: 25String index out of range: 25//output of exception

此外,完成此方法后,原始文件现在为空...

最佳答案

我认为您误解了 PrintWriter.write(string,offset,length) 的定义。如果我正确地阅读了您的问题,您认为它将在该偏移量处写入输出文件。但是,偏移量指定要写入的字符串中的起始位置,因此您尝试从偏移量 23 处开始写入字符串“ok”。由于该字符串只有 2 个字符,因此会出现异常。

如果您确实想覆盖文件中的特定字节,请查看 java.io.RandomAccessFile。请注意,虽然您可以用其他字节覆盖文件中的特定字节,但如果不将数据读入内存并将新副本写入磁盘,则无法“插入”数据或从文件中删除数据(导致文件长度不同)。

关于java - 打印写入器异常: String index out of range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1678601/

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