数行で構成される文字列があるとします。
aaa\nbbb\nccc\n (Linux の場合) または aaa\r\nbbb\r\nccc (Windows の場合)
#
次のように、文字列のすべての行に文字を追加する必要があります。
#aaa\n#bbb\n#ccc (Linux の場合) または #aaa\r\n#bbb\r\n#ccc (Windows の場合)
Java を実行する最も簡単でポータブルな(Linux と Windows の間の) 方法は何ですか?
line.separator
システム プロパティを使用する
String separator = System.getProperty("line.separator") + "#"; // concatenate the character you want
String myPortableString = "#aaa" + separator + "ccc";
これらのプロパティについては、こちらで詳しく説明しています。
のソース コードを開くとPrintWriter
、次のコンストラクタがあることがわかります。
public PrintWriter(Writer out,
boolean autoFlush) {
super(out);
this.out = out;
this.autoFlush = autoFlush;
lineSeparator = java.security.AccessController.doPrivileged(
new sun.security.action.GetPropertyAction("line.separator"));
}
に書き込むためのシステム固有のセパレーターを取得 (および使用) していOutputStream
ます。
プロパティレベルでいつでも設定できます
System.out.println("ahaha: " + System.getProperty("line.separator"));
System.setProperty("line.separator", System.getProperty("line.separator") + "#"); // change it
System.out.println("ahahahah:" + System.getProperty("line.separator"));
版画
ahaha:
ahahahah:
#
そのプロパティを要求するすべてのクラスが取得するようになりました{line.separator}#
何を使用しているのか正確にはわかりませんが、PrintWriterのprintf
メソッドを使用すると、フォーマットされた文字列を書き込むことができます。文字列を使用して%n
、プラットフォーム固有の行区切りを出力するフォーマット指定子を使用できます。
System.out.printf("first line%nsecond line");
出力:
first line
second line
(これもサポートする です) System.out
。PrintStream
Java 7 の時点で (ここにも記載されています)、次のメソッドも使用できます。
System.lineSeparator()
これは次と同じです:
System.getProperty("line.separator")
システム依存の行区切り文字列を取得します。公式のJavaDocsからのメソッドの説明を以下に引用します。
システム依存の行区切り文字列を返します。常に同じ値 (システム プロパティ line.separator の初期値) を返します。
UNIX システムでは、「\n」を返します。Microsoft Windows システムでは、"\r\n" を返します。