2012-11-23 49 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); –

相关问题