それで、私は改造用のゲーム用のツールを書いています。それはすべて正常に動作していますが、文字列をファイルに書き込む際に問題が発生しました。ゲームには UTF-16LE BOM でエンコードされたファイルが必要なので、私のコードは次のようになります。
public void save()
{
FileOutputStream fos = null;
byte[] buffer = null;
try {
fos = new FileOutputStream(new File("data//backup.txt"));
} catch (FileNotFoundException ex) {
}
try
{
fos.write((byte)255);
fos.write((byte)254);
fos.write("\"lang\"\n".getBytes("UTF-16LE"));
String s = "";
for(int i = 1;i<fileContent.size();i++)
{
s = fileContent.get(i);
fos.write(s.getBytes("UTF-16LE"));
fos.write(System.getProperty("line.separator").getBytes("UTF-16LE"));
}
fos.close();
}
catch(Exception e){}
}
fileContent は文字列の ArrayList であり、行区切り文字は含まれていません (これを複数回確認しました)。だから私の問題は、ファイルに書き込まれた行区切りが多すぎることです。例の代わりに:
a
b
私は次のようなものを得ます:
a
b
私が間違っていることは何ですか?