Vin*_*rya 3 java sockets android
我正在为Android编写一个使用InputStreamfrom 的应用程序Socket.我试图通过这种方式从pc发送文件到android.文件的大小几乎是40kb,在android上我发现它一次只能读取2kb的数据,所以我正在以块的形式阅读它.
我有两种读取字节的方法
1)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
2)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
形成这两种方法,在性能方面会更快?
第二,可能是很长的路要走.一次读取一个块几乎总是比一次读取一个字节更好,除非你真的只想读取一个字节.
然而,你的代码目前坏了,你不考虑返回值read以外的其他检查的东西已被读取.它可能没有读取2048字节.你应该使用类似的东西:
int bytesRead;
while ((bytesRead = inputStream.read(buffer, 0, buffer.length)) > 0)
{
// Use bytesRead here
}
Run Code Online (Sandbox Code Playgroud)
有了这个代码,在某些情况下你可以安全地一次读取超过2K ......这取决于网络,但至少代码是可靠的.
| 归档时间: |
|
| 查看次数: |
4814 次 |
| 最近记录: |