优化输出流写入

问题描述

我有一个优化问题。我有一个视频文件(.mp4)加载到我的android程序中。该文件为67兆字节。我想发送此文件,该文件通过串行连接转换为字节数组。波特率是115200 BAUD。我可以很好地收到我的消息,问题是,完全到达对方需要一个小时以上。有没有办法改善下面的代码

OutputStream out = serverConnection.getoutputStream();
        
        FmiClientConsole.consoleAppendString("video length: " + this.video.length);

        byte[][] byteArrayChunks = createArrayChunk(this.video,4096);

        int count = 0;
        FmiClientConsole.consoleAppendString("length total: " + byteArrayChunks.length);
        for (byte[] chunk : byteArrayChunks) {
            FmiClientConsole.consoleAppendString("len: " + chunk.length);

            out.write(chunk,chunk.length);

            FmiClientConsole.consoleAppendString("count: " + count);
            count++;
        }
        out.flush();

创建数组块方法

private static byte[][] createArrayChunk(byte[] array,int chunkSize) {
    int numOfChunks = (int) Math.ceil((double) array.length / chunkSize);
    byte[][] output = new byte[numOfChunks][];

    for (int i = 0; i < numOfChunks; i++) {
        int start = i * chunkSize;
        int length = Math.min(array.length - start,chunkSize);

        byte[] temp = new byte[length];
        System.arraycopy(array,start,temp,length);
        output[i] = temp;
    }

    //
    return output;
}

我应该注意,就此而言,我在优化或多线程方面经验不足。我的数组块是4096个字节,因为如果我的数据流比它高得多,那么输出流会一直给我indexoutofrangeexception。

感谢您的帮助

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)