我在unix服務器上構建一個字符串,然後將其寫入windows maschine。要製作換行符,我使用「\ r \ n」,但是服務器只添加了unix換行符「\ n」。要點是eol在十六進制0a和我需要0d0a其他程序。Java - 將unix換行轉換爲回車
有沒有人想過在將文字在Windows機器上書寫之前進行換行?
要將字符串轉換爲十六進制,然後將所有0a替換爲0d0a並將其轉換回字符串不是最佳做法。有沒有人有更好的解決方案
我在unix服務器上構建一個字符串,然後將其寫入windows maschine。要製作換行符,我使用「\ r \ n」,但是服務器只添加了unix換行符「\ n」。要點是eol在十六進制0a和我需要0d0a其他程序。Java - 將unix換行轉換爲回車
有沒有人想過在將文字在Windows機器上書寫之前進行換行?
要將字符串轉換爲十六進制,然後將所有0a替換爲0d0a並將其轉換回字符串不是最佳做法。有沒有人有更好的解決方案
寫入文件"\r\n"
將輸出"\r\n"
而不是"\n"
,即使在* nix上也是如此。下面是一個例子,使用BufferedWriter
因爲在一個點上,你說你正在使用一個:
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");
}
}
運行它:
$ java Example Writing to test.txt Done
證明其寫入\r\n
(不只是\n
)和輸出(是的,我使用的是* nix中,特別是Linux Mint的17.3):
$ 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
我已經試過了,但它似乎像unix無法解決\ r。 –
@JannickHerrmann:是的,它可以。也許如果你告訴我們什麼是「br」,那麼更多的上下文...... –
@JannickHerrmann:你的更新問題更一般,只是詢問如何去做。這個答案仍然可以解答。我已經添加了一個例子。 –
如果你真的想改變默認整個應用程序,重新定義line.separato r啓動時的系統屬性(帶-D參數)。但它是相當重量級的解決方案,只需爲需要的特定報告顯式編寫換行符,而將其餘所有內容(如本地日誌文件或其他)與unix newlins一起留下,可能會更容易。
'br'是什麼類型?我認爲'BufferedReader',但顯然這是輸入,而不是輸出... –
你的問題簡單地聲稱'br'是一個'BufferedWriter'。 ['BufferedWriter'](http://docs.oracle.com/javase/8/docs/api/java/io/BufferedWriter.html)沒有'appendLine'方法。所以,再次**,如果你告訴我們'br.appendLine()'中'br'的類型是什麼類型,那麼我們可以幫助你。 –
對不起,我編輯了問題,_appendLine()_是一個自己寫的方法,simlpy添加了「\ r \ n」。 –