Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打印到文件-Java初学者_Java - Fatal编程技术网

打印到文件-Java初学者

打印到文件-Java初学者,java,Java,我不明白为什么下面的简单程序不(创建)然后写入文件?你能找出问题所在吗 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

我不明白为什么下面的简单程序不(创建)然后写入文件?你能找出问题所在吗

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() );
        }
    }
}
很明显,我得到了正确的输出,但当我使用管道时,它没有做(我认为)它应该做的事情:

> java RandomSeq 5 > f1.txt
Java写入文件的“正常”方式是使用
Writer
类。我在下面举了一个小例子。或者,您可以更改写入的
PrintStream
,然后将输出发送到文件而不是控制台(基本上与下面相同)

编辑: 在我的机器上,使用
System.out.println()
代码可以正常工作。我只能想象写权限可能有问题,否则可能
StdOut
对象有一些bug

~/scratch $ java RandomSeq 5 > out.txt
~/scratch $ cat out.txt 
0.5674462012296635
0.05189786036638799
0.1290205079541452
0.22015961731674394
0.6503198654182695
~/scratch $ 

我试过system.out,它对我非常有效。可能存在对特定文件夹或目录的读/写权限,因此您可能无法创建f1.txt。如果没有合适的权限,请尝试更改文件夹权限或用户权限。还要确保您在程序创建的同一位置找到文件。

如果我使用System.out.println,则可以使用。你试过了吗?是的,我试过了。它仍然无法将随机生成的数字打印到文件中…您是否正在查看正确的目录?。StdOut和System.out.println在管道传输时都应该创建带有输出的文件。StdOut是普林斯顿大学提供的标准库的一部分-我有一个“intros”目录和文件目录(文件夹)-都不包含名为f1.txt的文件。问题是为什么他的程序在管道传输时不创建文件“f1.txt”(javarandomseq 5>f1.txt)确切地说,这是我的问题!使用
System.out.println()
(而不是
StdOut
)上面的代码工作正常。请参阅edit@PrabhuBeeman在这种情况下,他应该澄清问题的标题。问题清楚地询问如何写入文件,这就是我的答案,并给出了一个清晰的示例。'System.out.println(Math.random())'然后你用这种方式“java RandomSeq 5>f1.txt”创建了文件???完全正确。你的代码和执行方法是正确的。当我执行java RandomSeq 5>f1.txt时,它会生成f1.txt,输出类似于java RandomSeq 5。我没有发现你的代码和执行方法有任何问题。剩下的可能是每个用户您的执行方法无法创建文件的任务。posdef:我认为您正在复制我的权限声明。
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");
~/scratch $ java RandomSeq 5 > out.txt
~/scratch $ cat out.txt 
0.5674462012296635
0.05189786036638799
0.1290205079541452
0.22015961731674394
0.6503198654182695
~/scratch $