数组合并后的结果不一致

时间:2016-04-09 23:26:31

标签: java arrays bytearrayoutputstream

我试图将许多byte []数组连接成一个大数组。我找到了一个使用ByteArrayOutputStream的解决方案,但我发现结果很奇怪。

代码

List<SampleChunk> chunkList = new ArrayList<SampleChunk>();

public static byte[] getRaw(List<SampleChunk> list) throws FileNotFoundException {

    ByteArrayOutputStream os = new ByteArrayOutputStream();

    for (int i = 0; i < list.size(); i++) {
        try {
            os.write(list.get(i).getSamples());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    PrintWriter pr = new PrintWriter(new File("all.txt"));
    pr.write(Arrays.toString(os.toByteArray()));
    pr.close();

    return os.toByteArray();
}
public void init(){
   XuggleAudio xa = new XuggleAudio(new File("in.flv"));

    PrintWriter pr = new PrintWriter(new File("chunks.txt"));
    int count = 0;

    SampleChunk sc = null;
    while ((sc = xa.nextSampleChunk()) != null) {
        pr.write(count++ + " " + Arrays.toString(sc.getSamples()) + "\n");
        chunkList.add(sc);
    }

    getRaw(chunkList);
}
问题是,这两个输出并不匹配。 init()方法中的PrintWriter打印出类似这样的东西

0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2 [45, -1, -78, -4, 48, -1, -63, -4, 86,
3 [-38, -1, -55, -1, -62, -1, 85
4 ...

但输出格式getRaw()方法仅包含{-1,1,0,2}中的值。两个输出都具有相同的大小(os.toByteArray()。length == list.size *(...)getSamples.lenght)。我错了什么?如何合并theese数组?

0 个答案:

没有答案