1

次の単純なプログラムが(作成)してからファイルに書き込まない理由がわかりませんか? どこに問題があるか特定できますか?

public class RandomSeq
{
    public static void main( String[] args)
    {
        // command-line argument
        int N = Integer.parseInt( args[0] );

        // generate and print N numbers between 0 and 1
        for ( int i = 0 ; i < N; i++ )
        {
            // System.out.println( Math.random() );
            StdOut.println( Math.random() );
        }
    }
}

Interactions プロンプトで次のように入力すると:

Java RandomSeq 5

0.9959531649155268
0.5010055704125982
0.4444779637605908
0.4205901267129799
0.09968268057133955

私は明らかに正しい出力を取得しますが、パイプを使用すると、(私が思うに)すべきことをしません:

> java RandomSeq 5 > f1.txt
4

2 に答える 2

2

ファイルに書き込む "通常の" Java の方法は、Writerクラスを使用することです。以下に小さな例を示します。または、書き込む先を変更しPrintStreamて、出力をコンソールではなくファイルに送信することもできます (基本的には以下と同じです)。

PrintWriter out;
File myfile = new File(folder,"output.txt");
myfile.createNewFile();
fos = new FileOutputStream(myfile);
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(fos, "UTF-8")));
out.println("some text to go in the output file");

編集: 私のマシンでは、コードは を使用して正常に動作しSystem.out.println()ます。書き込み権限に問題がある可能性があるとしか想像できません。それ以外のStdOut場合は、オブジェクトにいくつかのバグがある可能性があります...

~/scratch $ java RandomSeq 5 > out.txt
~/scratch $ cat out.txt 
0.5674462012296635
0.05189786036638799
0.1290205079541452
0.22015961731674394
0.6503198654182695
~/scratch $ 
于 2012-04-05T10:44:40.237 に答える
0

system.out を試してみましたが、完璧に動作します。f1.txt を作成できない可能性があるため、特定のフォルダーまたはディレクトリに対する読み取り/書き込みアクセス許可が存在する可能性があります。適切な権限がない場合は、フォルダーのアクセス許可またはユーザー権限を変更してみてください。また、プログラムが作成している場所と正確に同じ場所でファイルを見つけていることを確認してください。

于 2012-04-05T11:08:42.283 に答える