打印到文件-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 $