Неравные результаты после слияния массива

Я пытаюсь объединить множество массивов байтов [] в один большой массив. Я нашел решение, использующее 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);
}

Проблема в том, что эти два выхода не совпадают. PrintWriter в методе init() печатает что-то вроде этого

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). Что я не прав? Как правильно объединить эти массивы?

0 ответов

Другие вопросы по тегам