次の行のアスキー値は10です。だから私はこれを試しました...
FileOutputStream os = new FileOutputStream(f, true);
os.write(10); // this should get me to next line ?
os.write(b); // b is a byte array...
次の行のアスキー値は10です。だから私はこれを試しました...
FileOutputStream os = new FileOutputStream(f, true);
os.write(10); // this should get me to next line ?
os.write(b); // b is a byte array...
クロスプラットフォームの行区切りの管理に注意する必要があります。これはさまざまな方法で取得できます。
System.getProperty("line.separator")
System.lineSeparator()
(Java7のみ)String.format("%n")
次に、次のような多くのより良い方法を選択できるようになるため、DataOutputStream
をラップするように注意する必要があります。FileOutputStream
writeChars(String str)
writeBytes(String str)
writeUTF(String str)
あなたの状況に最も適したものを使用するように。
また、バイト配列をストリームに直接書き込むと、バイナリ データが作成されることにも注意してください。これは、改行 (代わりにテキスト) を使用するのとは多少反対です。
Windowsでは、行区切り文字(CR、LF)として13と10を使用する必要があります。
os.write(13);
os.write(10);
したがって、アプリをプラットフォームに依存しないようにする場合は、Jackが提案するように、line.separatorシステムプロパティにあるものをすべて使用する必要があります。