限制大小字节[]Java 安卓
我必须在我的Android应用程序中填充一个字节[]。有时,这个大于4KB。 我初始化字节[],如下所示:
int size = ReadTools.getPacketSize(ptr.dataInputStream);
byte[] myByteArray = new byte[size];
这里,我的尺码是22625。但当我像这样填充字节[]时:
while (i != size) {
myByteArray[i] = ptr.dataInputStream.readByte();
i++;
}
但是当我打印字节[]的内容时,我有一个大小为4060的字节[]。 如果我的字节[]大于4060,Java会分割它吗?如果是,我怎么能有一个字节[]高于4060
这是我的全部代码:
public class ReadSocket extends Thread{
DataInputStream inputStream;
BufferedReader reader;
GlobalContent ptr;
public ReadSocket(DataInputStream inputStream, GlobalContent ptr)
{
this.inputStream = inputStream;
this.ptr = ptr;
}
public void run() {
int i = 0;
int j = 0;
try {
ptr.StatusThreadReadSocket = 1;
while(ptr.dataInputStream.available() == 0)
{
if(ptr.StatusThreadReadSocket == 0)
{
ptr.dataInputStream.close();
break;
}
}
if(ptr.StatusThreadReadSocket == 1)
{
int end = ReadTools.getPacketSize(ptr.dataInputStream);
byte[] buffer = new byte[end];
while (i != end) {
buffer[j] = ptr.dataInputStream.readByte();
i++;
j++;
}
ptr.StatusThreadReadSocket = 0;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
...
}
# 1 楼答案
Java不会分割任何东西。您应该发布复制错误的最小代码,并告诉
ReadTools
来自何处这里有两个选项:
ReadTools.getPacketSize()
返回4096
myByteArray
重新分配给另一个数组您应该发布完整的代码,并告知您使用的库。很可能,它会有一个类似的方法
如果您只需要在内存中大容量读取输入的内容,这将节省您的一些输入,并提供更好的性能