次のコードは、改行文字をバイト配列に導入し、バイト配列をファイルに書き込もうとします。Javaのバイト配列に改行文字を追加するには?
import java.io.*;
public class WriteBytes {
public static void main(String args[]) {
byte[] cities = { 'n', 'e', 'w', 'y', 'o', 'r', 'k', '\n', 'd', 'c' };
FileOutputStream outfile = null;
try {
outfile = new FileOutputStream("newfile.txt");
outfile.write(cities);
outfile.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
NEWFILEの内容であった:私が期待したものnewyorkdc
されました:
NEWYORK
DC
私は(byte)'\n'
ではなく無駄に'\n'
を型キャストしてみました。
ソリューション:
byte[] cities = { 'n', 'e', 'w', 'y', 'o', 'r', 'k', '\r','\n', 'd', 'c' };
に配列の初期化を変更して、私はfile.Iの内容は、それが改行文字を抑制したが、改行の組み合わせが続くキャリッジリターンを受け入れたと表示し、メモ帳++を使用していました。
何を持っていることは正しいです(私はローカルでそのコードを実行することにより、ダブルチェックしました)。問題は、あなたが結果をどのように見ているかでなければなりません。 –
@ T.J.Crowder:結果をどのように見ているのか、あなたが何を意味するのか理解できませんでした。 '\ n'の後に改行で配列の内容を書き込むと仮定していませんか? – Chaipau
私はあなたのコードが正しく動作していると言っています。あなたのファイルの内容が 'newyorkdc'だと思えば間違っています。あなたがこのコードで書かれていない古いファイル、またはあなたが '\ n'を隠して見たツールを見ていましたか?あなたのコードを修正していないときに、 '6e 65 77 79 6f 72 6b 0a 64 63'バイトのファイルがあります。 8バイト目は改行( '0a')であることに注意してください。 'cat newfile.txt'を実行すると、結果に改行が表示されます(私は\ nixを使用しています)。コードは問題ありません。 –