Я должен заполнить байт [] в своем приложении для Android. Когда-то это больше, чем 4 КБ. я инициализировать мой байт [], как это:Ограничение размера байта [] Java android
int size = ReadTools.getPacketSize(ptr.dataInputStream);
byte[] myByteArray = new byte[size];
Здесь мой размер = 22625. Но когда я заполняю мой байт [], как это:
while (i != size) {
myByteArray[i] = ptr.dataInputStream.readByte();
i++;
}
Но когда я печатаю содержание мой байт [], у меня есть байт [] с размером = 4060. Разделяет ли Java мой байт [], если этот размер больше 4060? И если да, как я могу получить байт [] выше 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();
}
}
...
}
Что такое «конец» переменной и какое значение оно содержит? – Ewald
Извините. Это не «конец», а «размер». – Vte
И вы распечатываете значение «размер» на консоли при отладке, чтобы убедиться, что это ожидаемый размер? Буфер, о котором идет речь, инициализируется, как показано в первом разделе кода, правильно? Я не знаком с ReadTools, поэтому эти вопросы. – Ewald