3

toString を使用して 1 行ずつコンソールに出力できますが、テキスト ファイルに出力すると同じように表示されないのはなぜですか?

public class NewClass
{

    @Override
    public String toString()
    {
        return ("John " + "\n" + "jumps " + "\n" + "fences");
    }
}


import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;


public class Sandbox
{
    public static void main(String[] args) throws IOException
    {
        NewClass object = new NewClass();            

        FileWriter file = new FileWriter("output.txt");
        PrintWriter output = new PrintWriter(file);
        output.println(object.toString());    
        output.close(); 
        System.out.println(object.toString());

    }
}

コンソール出力:

ジョン

ジャンプ

フェンス

output.txt

ジョンはフェンスを飛び越える

4

2 に答える 2

5

あなたはWindowsなので、代わりに(キャリッジリターン+ラインフィード)を\n使用します。\r\n

さらに良いことに、オペレーティング システムがテキスト ファイルの行を区切るために使用するシーケンスSystem.getProperty("line.separator")を取得するために使用します。

于 2012-09-23T23:04:29.187 に答える
-1

Windows ファイルには \r\n (キャリッジ リターンと改行) が必要です。Unix ファイルには \n が必要です。両方と互換性を持たせるには、FileOutputStream を使用できます。

try {
    FileOutputStream file = new FileOutputStream(new File("output.txt"));
    byte[] b = object.toString().getBytes();
    file.write(b);
} catch (Exception e) {
    //take care of IO Exception or do nothing here
}

示されているように、これを try-catch ステートメントで囲む必要がある場合があります。

于 2012-09-23T23:04:26.243 に答える