web-dev-qa-db-ja.com

Java FileWriterで新しい行を作成します

次の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で行うのと同じように、新しい行を挿入したいのですが、うまくいかないようです。

これを解決するために何ができますか?

ありがとうございました。

33
st.math

Windows用の\r\nなど、現在のOSで使用されている改行文字を取得する場合は、次のようにして取得できます。

  • System.getProperty("line.separator");
  • java7以降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のインスタンスです)。

53
Pshemo

System.getProperty( "line.separator" )を試してください

   writer.write(System.getProperty( "line.separator" ));
27
Prabhaker

FileWriterBufferedWriterにラップしてみてください:

BufferedWriter bw = new BufferedWriter(writer);
bw.newLine();

BufferedWriterのJavadoc ここ

6
Stewart

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);
4
Nick Bell

試してください:

String.format("%n");

詳細については、 この質問 を参照してください。

2
Stewart

同じコードを使用するが、ファイルに何かを追加するときに新しい行になるように新しい行を追加する場合。 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");
}
1
Lee Fogg

ここで、「\ n」も正常に機能しています。しかし、ここでの問題はテキストエディター(おそらくメモ帳)にあります。ワードパッドで出力を確認してください。

1
Roushan Kumar

私はこのような問題に取り組むでしょう:

    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によって提供されます
解決策としては大丈夫ですか?

0
blackbird014