簡體   English   中英

PrintWriter異常:字符串索引超出范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM