Javaでプラットフォーム依存の改行を取得するにはどうすればよいですか? "\n"
どこも使えない。
9 に答える
Java 7 にはSystem.lineSeparator()
メソッドが追加されました。
使用できます
System.getProperty("line.separator");
行区切りを取得するには
line.separator プロパティに加えて、Java 1.5 以降とString.format (またはその他の書式設定メソッド) を使用%n
している場合は、次のように使用できます。
Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY%n", c);
//Note `%n` at end of line ^^
String s2 = String.format("Use %%n as a platform independent newline.%n");
// %% becomes % ^^
// and `%n` becomes newline ^^
詳細については、Java 1.8 API for Formatterを参照してください。
ファイルに改行を書き込もうとしている場合は、単純に BufferedWriter のnewLine()メソッドを使用できます。
これも可能です: String.format("%n")
.
またはString.format("%n").intern()
、いくつかのバイトを節約します。
commons-langライブラリには、 SystemUtils.LINE_SEPARATORという定数フィールドがあります。
StringBuilder newLine=new StringBuilder();
newLine.append("abc");
newline.append(System.getProperty("line.separator"));
newline.append("def");
String output=newline.toString();
上記のスニペットには、プラットフォームに関係なく、改行で区切られた 2 つの文字列があります。
BufferedWriter
インスタンスを使用してファイルに書き込む場合はnewLine()
、そのインスタンスのメソッドを使用します。これは、ファイルに新しい行を書き込むためのプラットフォームに依存しない方法を提供します。
String + String などを使用して文字列を追加することは避け、代わりに StringBuilder を使用してください。
String separator = System.getProperty( "line.separator" );
StringBuilder lines = new StringBuilder( line1 );
lines.append( separator );
lines.append( line2 );
lines.append( separator );
String result = lines.toString( );