Java:为什么可以';我不能使用BufferedReader将带分隔符的字符串写入文件吗?

Java:为什么可以';我不能使用BufferedReader将带分隔符的字符串写入文件吗?,java,Java,当我对字符串进行定界(我最终想用字符进行定界)时,我遇到了一个奇怪的问题,然后我可以将其输出到屏幕上,但当我尝试写入文本文件时,我得到了arrayIndexOutOfBoundsException System.out.println(s[index]); String[] finalSplit = s[index].split("\\>"); System.out.println(s[index]+finalSplit.length); System.ou

当我对字符串进行定界(我最终想用<和>字符进行定界)时,我遇到了一个奇怪的问题,然后我可以将其输出到屏幕上,但当我尝试写入文本文件时,我得到了arrayIndexOutOfBoundsException

    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)
2011-11-17T11:22:33.456Z
2011-11-17T11:22:33.456Z2
2011-11-17T11:22:33.456Z直线

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

您正在访问不存在的元素1,因为拆分将全部移动到finalSplit[0]。更改分割分隔符(例如“>”)

我不确定您使用的是哪个
BufferedOutStream
。下面的工作正常(您需要将
字节[]
传递到
写入方法):

字符串s=
“2011-11-17T11:22:33.456Z”;
字符串[]finalSplit=s.split(\\>);
BufferedOutputStream bos=新的BufferedOutputStream(
新文件输出流(新文件(“delimited.txt”);
write(finalSplit[1].getBytes());
bos.close();

它写着:
2011-11-17T11:22:33.456ZOf当然你的数组不会被拆分。检查拆分后数组的长度。它是。它将
finalSplit.length
打印为2(输出中的第二行)。@YogendraSingh。哦没有注意到这一点。@user1847802:您能再发布几行堆栈跟踪吗?我发现了我的问题,谢谢您,在仔细检查输出后,我发现我从s获取的项没有内容,因此出现了错误。谢谢你把我的注意力转移到跟踪人员身上。问题是对代码的理解不够透彻,导致空字符串和不完整字符串无法通过。现在设法解决了它,谢谢大家的建议我的代码看起来像你的就我使用的bufferedWriter而言,它实际上只是我传递给我发布的代码的问题。如果我再细心一点,我就不会浪费你的时间了,对不起,谢谢you@user1847802:)我就是这么说的,我觉得很好。只想知道,您使用的是哪个缓冲输出流,哪个接受字符串?'code'FileWriter outFile=newfilewriter(newFilePath);'代码'BufferedWriter bufOut=新的BufferedWriter(输出文件);
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();