2016-09-09 6 views
1

次のコードは、改行文字をバイト配列に導入し、バイト配列をファイルに書き込もうとします。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の内容は、それが改行文字を抑制したが、改行の組み合わせが続くキャリッジリターンを受け入れたと表示し、メモ帳++を使用していました。

+3

何を持っていることは正しいです(私はローカルでそのコードを実行することにより、ダブルチェックしました)。問題は、あなたが結果をどのように見ているかでなければなりません。 –

+0

@ T.J.Crowder:結果をどのように見ているのか、あなたが何を意味するのか理解できませんでした。 '\ n'の後に改行で配列の内容を書き込むと仮定していませんか? – Chaipau

+2

私はあなたのコードが正しく動作していると言っています。あなたのファイルの内容が 'newyorkdc'だと思えば間違っています。あなたがこのコードで書かれていない古いファイル、またはあなたが '\ n'を隠して見たツールを見ていましたか?あなたのコードを修正していないときに、 '6e 65 77 79 6f 72 6b 0a 64 63'バイトのファイルがあります。 8バイト目は改行( '0a')であることに注意してください。 'cat newfile.txt'を実行すると、結果に改行が表示されます(私は\ nixを使用しています)。コードは問題ありません。 –

答えて

3

改行文字は、あなたが(「line.separator」)

またはそれ以上はSystem.getPropertyを呼び出し、それを取得する必要があり、OSに依存している、あなたはメソッド改行を持ってBufferedWriterを使用する必要がありますテキストファイルを(書いている場合) OSとは独立して行区切り文字を書くこと

1

ファイルを読み込んで印刷することで動作することが証明できます。

import java.io.*; 


public class Main { 
    public static void main(String args[]) { 
     String filename = "newfile.txt"; 
     byte[] cities = {'n', 'e', 'w', 'y', 'o', 'r', 'k', '\n', 'd', 'c'}; 
     FileOutputStream outfile = null; 
     try { 
      outfile = new FileOutputStream(filename); 
      outfile.write(cities); 
      outfile.close(); 

      BufferedReader in = new BufferedReader(new FileReader(filename)); 
      String line; 
      while ((line = in.readLine()) != null) { 
       System.out.println(line); 
      } 
      in.close(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     byte[] cities2 = {'n', 'e', 'w', 'y', 'o', 'r', 'k', 'd', 'c'}; 
     outfile = null; 
     try { 
      outfile = new FileOutputStream(filename); 
      outfile.write(cities2); 
      outfile.close(); 

      BufferedReader in = new BufferedReader(new FileReader(filename)); 
      String line; 
      while ((line = in.readLine()) != null) { 
       System.out.println(line); 
      } 
      in.close(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 


    } 
} 

テスト

newyork 
dc 
newyorkdc 
関連する問題