次のコードがあります。
private char[] headerToWrite;
protected String workingFileName;
private void writeHeaderToFile()
{
try
{
String completeFile = new String(headerToWrite);
File myFile = new File(workingFileName);
FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
myOutWriter.append(completeFile);
myOutWriter.close();
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
}
上記のコードでは、変数headerToWriteに配列が含まれており、最初のいくつかの値は次のとおり[1, Q, H, S, , 4, ±, Q, .....]
です。これは 16 進数で[31, 51, 48, 53, 01, 34, B1, 51...]
.
= 1QHS 4±Q...という文字列のcompleteFileを作成するために使用されます。
ただし、ファイルが書き込まれているとき、ファイルには 1QHS 4űQ..... が含まれており、16 進数では[31 51 48 53 01 34 c2 b1 51]
....
c2 が追加された理由がわかりませんでしたが、myOutWriter 内のバイトが次のようになっていることがわかりました。[49, 81, 72, 83, 1, 52, -62, -79, 81]
ここで興味深い点は、 の-62, -79
原因と思われる ですc2, b1
。それが機能するためには、b1 の 10 進数である である-62, -79
必要があります。177
興味深いことに、177 + 79 は 256 です。
したがって、明らかに、completeFileの ascii 文字からmyOutWriterのバイトへの転送c2
に追加されています。
誰かがそれを修正する理由と方法を説明できるかどうか疑問に思っていました。
ありがとう