Java 关闭输出流';行为不端;?

Java 关闭输出流';行为不端;?,java,Java,在以下代码中: for(int i = 5; i <= 100; i+=5) { linearSurprise(i); // Function calling 'System.out.print()' System.setOut(outStream); // Reassigns the "standard" output stream. System.out.println("Value of i: " + i); //

在以下代码中:

    for(int i = 5; i  <= 100; i+=5)
    {
        linearSurprise(i); // Function calling 'System.out.print()'

        System.setOut(outStream); // Reassigns the "standard" output stream.

        System.out.println("Value of i: " + i); // Outputting the value to the .txt file.

        outStream.close(); // 'outStrem' is closed so that when I recall my function, output will 
                           // will be sent to the console and not file.

      // After debugging, I notice that nothing is being displayed to either the console or file, 
      // but everything else is still working fine. 
    }

for(int i=5;i您可以尝试
outStream.flush()
而不是
outStream.close()
内部循环。它可能会工作。因为
outStream.close();
将关闭您的文件。最好在循环完成后关闭。

您可以尝试
outStream.flush()
而不是
outStream.close()
内部循环。它可能会工作。
超出流。关闭()
将关闭您的文件。最好在循环完成后关闭。

您正在关闭循环中的
OutputStream
,并且
系统。out
现在已关闭;您必须重新为其分配一个打开的
OutputStream
,以便能够写入更多的输出

为此,您确实应该直接写入
文件输出流
;将
System.out
重定向到它没有任何价值,这会导致类似这样的问题

PrintStream outStream = new PrintStream(File outputFile);
for(int i = 5; i <= 100; i += 5)
{
    linearSurprise(i);
    outStream.println("Value of i: " + i);
}
outStream.close();
PrintStream outStream=新的PrintStream(文件outputFile);
对于(int i=5;i您正在关闭循环中的
OutputStream
,并且
系统。out
现在已关闭;您必须重新为其分配一个打开的
OutputStream
,以便能够写入更多的输出

为此,您确实应该直接写入
文件输出流
;将
System.out
重定向到它没有任何价值,这会导致类似这样的问题

PrintStream outStream = new PrintStream(File outputFile);
for(int i = 5; i <= 100; i += 5)
{
    linearSurprise(i);
    outStream.println("Value of i: " + i);
}
outStream.close();
PrintStream outStream=新的PrintStream(文件outputFile);

对于(int i=5;i因为调用CLose(),流被释放,因此不再存在

因为调用CLose(),流被释放,因此不再存在

在循环后关闭文件

outStream.close();

循环结束后关闭文件

outStream.close();

这种假设是无效的:

“OutREM”关闭,以便在我调用函数时发送输出 到控制台,而不是文件

为什么它会神奇地返回控制台?它只会被写入一个封闭的流,这将导致异常被
PrintStream
吞没

如果要将其设置回原始控制台流,则需要明确执行以下操作:

PrintStream originalOutput = System.out;

// Do stuff...

System.setOut(originalOutput); // Now we can write back to the console again

这种假设是无效的:

“OutREM”关闭,以便在我调用函数时发送输出 到控制台,而不是文件

为什么它会神奇地返回控制台?它只会被写入一个封闭的流,这将导致异常被
PrintStream
吞没

如果要将其设置回原始控制台流,则需要明确执行以下操作:

PrintStream originalOutput = System.out;

// Do stuff...

System.setOut(originalOutput); // Now we can write back to the console again
System.setOut(扩展);//重新分配“标准”输出流。
for(int i=5;i
System.setOut(outStream);//重新分配“标准”输出流。

对于(int i=5;i打印到文件,如下所示:

outStream.println("What ever you want");
然后关闭循环后的流


不要放线(超流);

打印到文件,如下所示:

outStream.println("What ever you want");
然后关闭循环后的流


不要出发(向外扩张)

为什么要写入System.out?为什么不直接写入文件?包含更多代码,这样我们就可以看到全局。为什么要写入System.out?为什么不直接写入文件?包含更多代码,这样我们就可以看到全局。我正试图在输出到txt文件和控制台之间切换,这就是为什么在循环中…我尝试在输出到txt文件和控制台之间切换,这就是为什么它在循环中…我尝试在输出到txt文件和控制台之间切换,这就是为什么它在循环中…一旦你关闭流,你需要创建一个新的可以写入它。我尝试在输出到txt文件和控制台之间切换txt文件和控制台,这就是为什么它在循环中…一旦你关闭了流,你需要创建一个新的可以写入它。