使用Okio在Android上写入文件

时间:2018-06-29 11:58:23

标签: java android fileoutputstream okio

大家好,我正在从Android设备读取原始音频,我想使用Okio将其写入文件,如下所示:

BufferedSink sink = Okio.buffer(Okio.sink(file));

我有一个回调以检索音频数据,然后将音频数据写入bufferedSink

@Override
public void onAudioData(byte[] data) {
    sink.write(data);
}

但是有时候,当我听音频文件时,最后一帧丢失了,所有文件的长度均为8182字节或倍数。

如果我使用FileOutputStream,一切都会很好,但这是第一种方法,我的未来目的是使用Okio Pipes和OkHttp流音频。有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

您的代码并未显示sink的全部用法,但似乎您在完成操作后并未关闭它。因此,只有已填满的那些内部段(长度为8192字节,因此您的文件大小应该是该数字的倍数)才会写入磁盘,而最后一个则不会。 作为解决方案,您应该close()Sink