如何在for循环中使用System.arraycopy

时间:2017-11-22 06:26:13

标签: java android

我有ArrayList的字节。我想使用System.arraycopy函数来组合ArrayList的所有字节。以下是我的代码。

public void createFile(ArrayList<byte[]> arrayList) throws IOException
{
    FileOutputStream fos = new FileOutputStream(Constant.MERGE_DIRECOTRY + "out" + Constant.FILE_EXTENSION.toString());
    for(byte[] data: arrayList)
        fos.write(data);

    fos.close();
    MediaPlayer mp = MediaPlayer.create(MergerActivity.this, Uri.parse(Constant.MERGE_DIRECOTRY + "out" + Constant.FILE_EXTENSION.toString()));
    if(mp != null)
    {
        totalduration = totalduration + mp.getDuration();
        Log.d("duration",""+Utilis.milliSecondsToTimer(totalduration));
    }
}

如果fos.write()。

,我如何使用System.arraycopy函数

1 个答案:

答案 0 :(得分:2)

要使用System.arraycopy,您必须首先找出输出数组所需的长度:

int len = 0;
for(byte[] data: arrayList)
    len += data.length;

现在您可以将源数组复制到目标数组:

byte[] output = new byte[len];
int pos = 0;
for(byte[] data: arrayList) {
    System.arrayscopy(data,0,output,pos,data.length);
    pos+=data.length;
}