私は同様の記事を見てきましたが、誰も本当に私の質問に答えませんでした。したがって、私は別のスレッドで自分の質問を投稿します。私はバイト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. }
以下のコードを介してこれを実現しようとしています。しかし、私はサイズがInteger.MAX_VALUE
を超えて2行目でNegativeArraySizeException
を取得します。私はそうでなければこれを達成する方法がわかりません。私は以下の関数で計算するよう
bytesToSkip
は長いです:あなたの投稿bytes->long
機能からスタート
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)のように聞こえます。実際にあなたが達成しようとしていることを教えてください。 –
そして、最初に 'bytesToSkip'が' long'である点は何ですか?一度に多くのデータを読み取ることはできませんので、コード自体のポイントは何ですか?あなたは 'InputStream.skip()'を知っていますか? – EJP
@EJPバイトを標準入力として読み込む必要があった理由は、InputSreamを最初に使用しなかった理由です。 –