2

次の行のアスキー値は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...
4

2 に答える 2

6

クロスプラットフォームの行区切りの管理に注意する必要があります。これはさまざまな方法で取得できます。

  • System.getProperty("line.separator")
  • System.lineSeparator()(Java7のみ)
  • String.format("%n")

次に、次のような多くのより良い方法を選択できるようになるため、DataOutputStreamをラップするように注意する必要があります。FileOutputStream

  • writeChars(String str)
  • writeBytes(String str)
  • writeUTF(String str)

あなたの状況に最も適したものを使用するように。

また、バイト配列をストリームに直接書き込むと、バイナリ データが作成されることにも注意してください。これは、改行 (代わりにテキスト) を使用するのとは多少反対です。

于 2012-06-16T13:32:16.903 に答える
3

Windowsでは、行区切り文字(CR、LF)として13と10を使用する必要があります。

os.write(13);
os.write(10);

したがって、アプリをプラットフォームに依存しないようにする場合は、Jackが提案するように、line.separatorシステムプロパティにあるものをすべて使用する必要があります。

于 2012-06-16T14:30:38.893 に答える