2012-11-23 80 views
1

我遇到一個奇怪的問題,當我分隔一個字符串(我最終想由<和>字符分隔),然後我可以輸出到屏幕,但是當我嘗試寫入文本文件時,我得到一個arrayIndexOutOfBoundsException 。從上面的Java:爲什麼我不能使用BufferedReader將分隔字符串寫入文件?

System.out.println(s[index]); 
    String[] finalSplit = s[index].split("\\>"); 
    System.out.println(s[index]+finalSplit.length); 
    System.out.println(finalSplit[1]); 
    bufOut.write(finalSplit[1]); 

輸出示例如下:

<env:MessageSentDateTime>2011-11-17T11:22:33.456Z</env:MessageSentDateTime> 
    <env:MessageSentDateTime>2011-11-17T11:22:33.456Z</env:MessageSentDateTime>2 
    2011-11-17T11:22:33.456Z</env:MessageSentDateTime 

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 
      at Main.main(main.java:81) 

如果我不這樣做拆分,然後我可以寫了整個事情的文本文件,但我只想出的信息中間。

有沒有人有任何建議,我要去哪裏錯了?

+1

當然你的數組沒有被分割。分割後檢查數組的長度。 –

+0

是的。它將'finalSplit.length'打印爲2(輸出中的第二行)。 –

+0

@YogendraSingh。哦。沒有注意到這一點。 –

回答

0

在線路

System.out.println(finalSplit[1]); 

要訪問元件1不存在,因爲分束移動到所有finalSplit [0]。更改您的分隔符(例如「>」)

+0

關於通過這段代碼的內容不夠徹底的問題是,獲得空的和不完整的字符串找到他們的方式。現在管理修復它,謝謝大家的建議 –

0

我不確定,您使用的是哪個BufferedOutStream。下面做工精細(你需要傳遞byte[]write法):

String s= 
    "<env:MessageSentDateTime>2011-11-17T11:22:33.456Z</env:MessageSentDateTime>"; 
String[] finalSplit = s.split("\\>"); 
BufferedOutputStream bos = new BufferedOutputStream(
           new FileOutputStream(new File("delimited.txt"))); 
bos.write(finalSplit[1].getBytes()); 
bos.close(); 

它寫道:2011-11-17T11:22:33.456Z</env:MessageSentDateTimedelimited.txt文件。

+0

就我使用的bufferedWriter而言,我的代碼看起來像你的代碼,它確實只是我傳遞給我發佈的代碼的一個問題。多加小心一點,我可以節省你浪費時間,對不起,謝謝 –

+0

@ user1847802::)這就是我所說的,它對我來說看起來很好。只是要知道,你使用哪個Buffered Out Stream,其中需要String? –

+0

'code'FileWriter outFile = new FileWriter(newFilePath); 'code'BufferedWriter bufOut = new BufferedWriter(outFile); –

相關問題