新しい行を含む文字列があります。この文字列を関数に送信して、次のように文字列をテキストファイルに書き込みます。
public static void writeResult(String writeFileName, String text)
{
try
{
FileWriter fileWriter = new FileWriter(writeFileName);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write(text);
// Always close files.
bufferedWriter.close();
}
catch(IOException ex) {
System.out.println("Error writing to file '"+ writeFileName + "'");}
} //end writeResult function
しかし、ファイルを開くと、新しい行がないことがわかります。コンソール画面にテキストを表示すると、新しい行で表示されます。テキストファイルに改行文字を書き込むにはどうすればよいですか。
編集:これが上記の関数に送信した引数text
であると仮定します:
I returned from the city about three o'clock on that
may afternoon pretty well disgusted with life.
I had been three months in the old country, and was
テキストファイルにこの文字列をそのまま(新しい行で)書き込む方法。私の関数は文字列を1行で書き込みます。新しい行を含むテキストをファイルに書き込む方法を提供できますか?
編集2:テキストは元々.txtファイルにあります。私は以下を使用してテキストを読みました:
while((line = bufferedReader.readLine()) != null)
{
sb.append(line); //append the lines to the string
sb.append('\n'); //append new line
} //end while
ここで、sb
はStringBufferです
InEDIT 2:
while((line = bufferedReader.readLine()) != null)
{
sb.append(line); //append the lines to the string
sb.append('\n'); //append new line
} //end while
テキストファイルを読んで、それに改行を追加しています。改行を追加しないでください。メモ帳のような単純なWindowsエディターでは改行が表示されません。代わりに、次を使用してOS固有の行区切り文字列を追加します。
sb.append(System.lineSeparator());
(Java 1.7および1.8)orsb.append(System.getProperty("line.separator"));
(Java 1.6以下)
または、後でString.replaceAll()
を使用して、StringBufferに組み込まれた文字列の"\n"
をOS固有の改行文字に置き換えることができます。
String updatedText = text.replaceAll("\n", System.lineSeparator())
ただし、'\n'
を追加して後で置換するよりも、文字列の作成中に追加する方が効率的です。
最後に、開発者として、ファイルの表示または編集にメモ帳を使用している場合、 Notepad ++ またはお気に入りのJava IDEなどのはるかに優れたツールがあるため、ドロップする必要があります。
BufferedWriterクラスはnewLine()
メソッドを提供します。これを使用すると、プラットフォームに依存しなくなります。
シンプルなソリューション
File file = new File("F:/ABC.TXT");
FileWriter fileWriter = new FileWriter(file,true);
filewriter.write("\r\n");
bufferedWriter.write(text + "\n");
このメソッドは機能しますが、プラットフォーム間で改行文字が異なる場合があるため、代わりにこのメソッドを使用できます。
bufferedWriter.write(text);
bufferedWriter.newline();
文字列を文字列配列に分割し、上記の方法を使用して書き込みます(テキストに新しい行を取得するには\ nが含まれていると仮定します)
String[] test = test.split("\n");
そしてループの内側
bufferedWriter.write(test[i]);
bufferedWriter.newline();
このアプローチは私にとって常に有効です:
String newLine = System.getProperty("line.separator");
String textInNewLine = "this is my first line " + newLine + "this is my second
line ";
次のコードを新しい行を挿入する場所に配置します。
bufferedWriter.newLine();
以下は、現在のプラットフォームのデフォルトの改行文字を取得するスニペットです。 System.getProperty("os.name")
とSystem.getProperty("os.version").
の例を使用してください:
public static String getSystemNewline(){
String eol = null;
String os = System.getProperty("os.name").toLowerCase();
if(os.contains("mac"){
int v = Integer.parseInt(System.getProperty("os.version"));
eol = (v <= 9 ? "\r" : "\n");
}
if(os.contains("nix"))
eol = "\n";
if(os.contains("win"))
eol = "\r\n";
return eol;
}
Eolは改行です