java InputStream哪个读取速度更快()或读取速度更快(字节、偏移量、长度)
我正在为安卓编写一个应用程序,它使用来自Socket
的InputStream
。我正试图通过这种方式将文件从pc发送到安卓。该文件的大小几乎为40kb,在安卓上,我发现它一次只能读取2kb的数据,所以我将其分块读取
我有两种读取字节的方法
(一)
while((d=inputStream.read())>=0)
{
imgData[i]=(byte)d;
i++;
if(i>=40054)
{
// do the further processing here like saving it on disk.
i=0;
}
}
(二)
while(inputStream.read(byte,0,2048)>=0)
{
//merge this byte to buffer here...
i=i+2048;
if(i>=40054)
{
// do the further processing here like saving it on disk.
i=0;
}
}
从这两种方法来看,哪种方法的性能更快
# 1 楼答案
@Op,您还可以创建具有指定缓冲区大小的BufferedInputStream,并从缓冲流中读取Chunck
# 2 楼答案
第二,可能会有很长一段路要走。一次读取一个块几乎总是比一次读取一个字节更好,除非你真的只想读取一个字节
然而,您的代码目前已被破坏,因为除了检查某个已被读取之外,您没有考虑
read
的返回值。它可能没有读取2048字节。你应该使用类似于:有了这段代码,在某些情况下,您很可能可以安全地一次读取超过2K的数据。。。这取决于网络,但至少代码是可靠的