0

ファイルのバイト配列文字列を取得し、すべてのバイトをマイナス 2 またはそのようなものにして、後でプラス 2 を取得したいと考えています。次のようにしたかったのです。

byte buffer[] = new byte[(int) file.length()];
try {
    in = new FileInputStream(file);
    in.read(buffer);

    for(int i = 0; i < buffer.length; i++){
        buffer[i] = (byte) (buffer[i]-2); // and then later +2
    }
}

しかし、うまくいきません。最初は私が望むようにファイルを変更しますが、後で全体を +2 すると、別の奇妙な結果が得られます。

だから一緒に私はこれが欲しい:

  1. というバイト配列を取得しますbuffer
  2. 次に、いくつかの値を変更します
  3. これらの値を元に戻します
  4. 以前と同じファイルを取得する
4

2 に答える 2

2

コードにいくつかのエラーがあります:

  1. new byte[(int) file.length()];これにより、OutOfMemoryError またはファイルの破損読み取りが決定的に発生します。
  2. in.read(buffer);これは、ファイルの数バイトのみを読み取ります。
  3. この質問に「暗号化」のタグを付けました。これは暗号化ではありません。コンテンツを「復号化」するのは非常に簡単です。

あなたのファイルはまだ同じ長さですか?

于 2013-01-11T20:03:21.853 に答える
1

呼び出しの戻り値を使用して、in.read()実際にバッファーに読み取られたバイト数、つまり出力に書き込むバイト数を正確に知る必要があります。

于 2013-01-11T20:55:00.767 に答える