次のFileWriter
をコーディングしました:
try {
FileWriter writer = new FileWriter(new File("file.txt"), false);
String sizeX = jTextField1.getText();
String sizeY = jTextField2.getText();
writer.write(sizeX);
writer.write(sizeY);
writer.flush();
writer.close();
} catch (IOException ex) {}
ここで、通常の\n
で行うのと同じように、新しい行を挿入したいのですが、うまくいかないようです。
これを解決するために何ができますか?
ありがとうございました。
Windows用の\r\n
など、現在のOSで使用されている改行文字を取得する場合は、次のようにして取得できます。
System.getProperty("line.separator");
System.lineSeparator()
String.format("%n");
を介して生成しますPrintStream
とそのprintln
メソッドを使用して、文字列の最後にOS依存の行区切り文字を自動的に追加することもできます。
PrintStream fileStream = new PrintStream(new File("file.txt"));
fileStream.println("your data");
// ^^^^^^^ will add OS line separator after data
(BTW System.out
もPrintStreamのインスタンスです)。
System.getProperty( "line.separator" )
を試してください
writer.write(System.getProperty( "line.separator" ));
FileWriter
をBufferedWriter
にラップしてみてください:
BufferedWriter bw = new BufferedWriter(writer);
bw.newLine();
BufferedWriterのJavadoc ここ 。
1.8以降、これは応答に追加する価値がある追加のソリューションであると考えました。
パスJava.nio.file.Files.write(パスパス、反復可能行、OpenOption ...オプション)throws IOException
StringBuilder sb = new StringBuilder();
sb.append(jTextField1.getText());
sb.append(jTextField2.getText());
sb.append(System.lineSeparator());
Files.write(Paths.get("file.txt"), sb.toString().getBytes());
同じファイルに追加する場合は、おそらくFiles.write()で追加フラグを使用します
Files.write(Paths.get("file.txt"), sb.toString().getBytes(), StandardOpenOption.APPEND);
同じコードを使用するが、ファイルに何かを追加するときに新しい行になるように新しい行を追加する場合。 BufferedWriterのnewLine()
を使用するだけです。
ここでコードも改善しました。Numberデータ型に何もキャストされていないため、NumberFormatExceptionは不要で、一度使用する変数を保存することも必要でした。
try {
BufferedWriter writer = new BufferedWriter(new FileWriter("file.txt"));
writer.write(jTextField1.getText());
writer.write(jTextField2.getText());
writer.newLine();
writer.flush();
writer.close();
} catch (IOException ex) {
System.out.println("File could not be created");
}
ここで、「\ n」も正常に機能しています。しかし、ここでの問題はテキストエディター(おそらくメモ帳)にあります。ワードパッドで出力を確認してください。
私はこのような問題に取り組むでしょう:
BufferedWriter output;
output = new BufferedWriter(new FileWriter("file.txt", true));
String sizeX = jTextField1.getText();
String sizeY = jTextField2.getText();
output.append(sizeX);
output.append(sizeY);
output.newLine();
output.close();
FileWriterコンストラクターのtrueは、追加を許可します。
メソッドnewLine()はBufferedWriterによって提供されます
解決策としては大丈夫ですか?