Я прошел аналогичные записи, но никто из них не ответил на мой вопрос. Поэтому я отправляю свой вопрос в отдельный поток. мне нужно пропустить несколько байт в файле, который я читаю в байтовых array.I пытаются добиться этого с помощью кода нижеЧтение байтов в файле: java.lang.NegativeArraySizeException
1. byte [] readBytesToSKip = null;
2. readBytesToSKip = new byte[(int)bytesToSkip];
3. bytesReadToSkip = System.in.read(readBytesToSKip) ;
4. if(bytesReadToSkip > 0)
5. {
6. baos_.write(readBytesToSKip, 0, bytesReadToSkip);
7. }
Но я получаю NegativeArraySizeException
в строке 2, где размер превышает Integer.MAX_VALUE
. Я не уверен, как этого добиться.
bytesToSkip
долго, как я вычислить в функции ниже:
public static long bytesToLong1(byte[] bytes) {
long value = 0;
for (int i = 0; i < bytes.length; i++)
{
value = (value << 8) + (bytes[i] & 0xff);
}
return value;
}
Каково значение 'bytesToSkip'? Если это 'long' и больше, чем' Integer.MAX_VALUE', вы не сможете пропустить его за один раз. Вам нужно будет сделать это несколькими шагами. Как написано, этот вопрос пахнет как [проблема XY] (http://xyproblem.info). Скажите нам, что вы _actually_ пытаетесь выполнить. –
И в чем смысл 'bytesToSkip' быть' long' в первую очередь? так как вы не можете прочитать столько данных одновременно? И в чем смысл самого кода? Вы знаете о 'InputStream.skip()'? – EJP
@EJP Мне нужно было прочитать стандартный формат байтов, поэтому я не использовал InputSream на первом месте. –