【发布时间】:2013-07-13 20:44:33
【问题描述】:
我正在开发 Android 上的蓝牙应用程序。此 inputStream 来自连接套接字。我想读取一定长度的字节。
我尝试的第一种方法:
byte[] data = new byte[lengthtoread];
for (int i = 0; i < data.length; i++)
data[i] =(byte) mmInStream.read() ;
我发现它太慢了。
第二种方式:
byte[] data = new byte[lengthtoread];
mmInStream.read(data, 0, lengthtoread);
在这我发现当读取的长度太大时它没有完全读取数据
有人帮帮我吗??
【问题讨论】:
-
你是怎么意识到的(在第二种方法中)?
lengthtoread的值是多少?目标文件大小是多少? -
lengthtoread 很大,有时或多或少接近 90000
-
那么为什么要一次阅读所有内容?这不是一个好主意,尝试缓冲数据
-
缓冲区的可靠大小是多少??
-
它依赖于哥们,它依赖于目标环境,你需要像J2ME应用程序这样的小型设备,但它在服务器中可能很大,它也依赖于数据速率,如果数据速率很慢,保持缓冲区小,对于任何获取的数据做业务,有时它依赖于业务,例如每个任务至少需要 4096 字节,我不能说 多少是好的,它依赖于哥们:)
标签: java inputstream bytebuffer bufferedinputstream inputstreamreader