2016-05-17 6 views
0

私はUNIXサーバに文字列を作成し、それをWindowsマシンに書き出します。改行を行うには "\ r \ n"を使用しますが、サーバーはunix改行 "\ n"だけを追加します。ポイントはeolが16進数で0aであり、他のプログラムには0d0aが必要です。Java - unix改行を改行に変換する

誰かがラインフィードをマスキンに書き込む前に変換するアイデアはありますか?

文字列を16進数に変換するには、0aをすべて0d0aに置き換え、文字列に変換するのがベストプラクティスではありません。誰かがより良い解決策を持っていますか?

+0

どのようなタイプの 'br'ですか?私は 'BufferedReader'だと思うでしょうが、明らかにその入力は出力ではありません... –

+0

あなたの質問は簡単に' br'が 'BufferedWriter'だと主張しました。 ['BufferedWriter'](http://docs.oracle.com/javase/8/docs/api/java/io/BufferedWriter.html)には' appendLine'メソッドはありません。したがって、**再度**、あなたが 'br.appendLine()'の中の 'br'がどんな型かを教えれば、おそらくもっとあなたを助けることができます。 –

+0

申し訳ありませんが、質問を編集しました。_appendLine()_は、simlpyが "\ r \ n"を追加した独自の記述メソッドです。 –

答えて

4

ファイルに"\r\n"を書き込むと、"\n"ではなく"\r\n"がファイルに出力されます(* nix上であっても)。ここで使用して、例ですBufferedWriterある時点であなたは1を使用していたと述べたことから:

import java.io.*; 

public class Example { 
    public static final void main(String[] args) { 
     System.out.println("Writing to test.txt"); 
     try (
      Writer w = new FileWriter("test.txt"); 
      BufferedWriter bw = new BufferedWriter(w); 
     ) { 
      bw.append("Testing 1 2 3"); 
      bw.append("\r\n"); 
      bw.append("More Testing"); 
      bw.append("\r\n"); 
     } 
     catch (IOException ioe) { 
      System.err.println("Error writing to file: " + ioe.getMessage()); 
     } 
     System.out.println("Done"); 
    } 
} 

それを実行:はい(それは\r\nを書き込み

 
$ java Example 
Writing to test.txt 
Done 

証明(だけでなく、\n)を出力し、あなたは本当にアプリケーション全体のデフォルトを変更したい場合はline.separatoを再定義し、

 
$ hexdump -C test.txt 
00000000 54 65 73 74 69 6e 67 20 31 20 32 20 33 0d 0a 4d |Testing 1 2 3..M| 
00000010 6f 72 65 20 54 65 73 74 69 6e 67 0d 0a   |ore Testing..| 
0000001d 
+0

私はこれをすでに試しましたが、Unixが\ rを解決できないようです。 –

+0

@JannickHerrmann:はい、できます。たぶん、もしあなたが 'br'が何であるかを教えてくれれば、もう少し文脈が... –

+0

@JannickHerrmann:あなたの更新された質問はもっと一般的です。この回答はまだ答えています。私は例を追加しました。 –

0

:私は* nixの、特にLinuxのミント17.3)を使用していますrシステムプロパティ(-Dパラメータ付き)。しかし、それは非常に重い解決策です、あなたが必要とする特定のレポート用の改行文字を明示的に書くだけで、残りのすべて(ネイティブログファイルなど)をunix newlinsに残す方が簡単かもしれません。

関連する問題