[英]PrintWriter exception: String index out of range
我正在嘗試讀取文件,然后將一些文本附加到文件中的某個位置(即@ 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。 請注意,雖然可以用其他字節覆蓋文件中的特定字節,但是如果不將其讀入內存並將新副本寫入磁盤,則無法“插入”數據或從文件中刪除數據(導致文件長度不同)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.