因此,我花了一段时间来修复调试中的所有错误,并运行我从我的入门Java类中编写的程序。但是现在它在第一次输入后给出了下面的错误。
Exception in thread "main" java.io.IOException: Stream closed
at sun.nio.cs.StreamDecoder.ensureOpen(StreamDecoder.java:46)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:148)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:161)
at java.io.BufferedReader.readLine(BufferedReader.java:324)
at java.io.BufferedReader.readLine(BufferedReader.java:389)
at StatsDemo.main(StatsDemo.java:54)我根据评论和说明把下面的所有东西都写下来了。但我不知道是怎么回事。它应该要求输入文件numbers.txt,但是在我输入文件后,它会给出这个错误。
import java.text.DecimalFormat;
import java.util.Scanner;
import java.io.*;
public class StatsDemo
{
public static void main(String [] args) throws IOException
{
double sum = 0;
int count = 0;
double mean = 0;
double stdDev = 0;
double difference;
DecimalFormat threeDecimals = new DecimalFormat("0.000");
Scanner keyboard = new Scanner (System.in);
String filename;
System.out.println("This program calculates statistics"
+ "on a file containing a series of numbers");
System.out.print("Enter the file name: ");
filename = keyboard.nextLine();发布于 2014-10-27 23:47:06
您正在阅读的第二个循环:
行= in.readLine();
而您的开放流称为in2。
也就是说,你从错误且封闭的溪流中阅读。
此外,作为良好实践,您应该关闭最上面的读取器,而不是最内部的读取器,即您应该使用in.close()而不是file.close();
冲水的目的:
如果您查看PrintWriter的源代码,您将看到它使用了一个内部缓冲区:
public PrintWriter(File file, String csn)
throws FileNotFoundException, UnsupportedEncodingException
{
this(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), csn)),
false);
}该缓冲区不会立即将输出发送到基础输出流。它将输出保存在内存中,直到刷新。通常,当输出包含新行时,刷新会自动发生。否则,您需要手动刷新缓冲区,以确保实际写入输出。
https://stackoverflow.com/questions/26598511
复制相似问题