无法在java中执行文件IO

无法在java中执行文件IO,java,file-io,bufferedreader,Java,File Io,Bufferedreader,我是java的初学者,为postfix Evaluation编写了以下问题。尽管该程序对于控制台IO运行良好。它在使用文件时出现问题。我试图在文件output00.txt中获取程序的答案,但该文件为空。 这是代码。我遗漏了与这个问题无关的方法 public static void main(String[] args) throws Exception { FileReader input = new FileReader("input00.txt"); Buff

我是java的初学者,为postfix Evaluation编写了以下问题。尽管该程序对于控制台IO运行良好。它在使用文件时出现问题。我试图在文件
output00.txt
中获取程序的答案,但该文件为空。 这是代码。我遗漏了与这个问题无关的方法

public static void main(String[] args) throws Exception  {


     FileReader input = new FileReader("input00.txt");
        BufferedReader in = new BufferedReader(input)   ;
        FileWriter output = new FileWriter("output00.txt");
        BufferedWriter out = new BufferedWriter(output);
        while (true)  {
          String lineReader = in.readLine();
          if (lineReader==null) {
              break;
          }
          Stack<String> m_Stack = new Stack<String>();

          m_Stack.addAll(Arrays.asList(lineReader.trim().split("[ \t]+")));

          if (m_Stack.peek().equals("")){
              continue;
          }
          try  {
            double finVal = evaluateRPN(m_Stack);
            if (!m_Stack.empty()) {
                throw new Exception();
            }
            out.write(finVal + "\n");
          }
          catch (Exception e)  {System.out.println("error");}
        }
      }

你必须关闭这条小溪。请尝试退出。关闭()您必须关闭流。请尝试
out.close()

您需要调用
out.flush()
来刷新写入文件的内容,或者调用
out.close()
,它将自动刷新已缓冲的内容。实际上,无论如何,您都应该调用
close()
,因为这是一种很好的做法,如果您有办法退出while()循环的话。

您需要调用
out.flush()
来刷新写入文件的内容,或者调用
out.close()
来自动刷新缓冲的内容。实际上,无论如何都应该调用
close()
,因为这是一种很好的做法,如果有办法退出while()循环。

可以尝试在write语句之后添加
out.flush()
。然后它会将缓冲区写入文件。

您可以尝试在write语句之后添加
out.flush()
。然后它会将缓冲区写入文件。

是否在正确的位置查找输出文件?尝试删除并查看是否重新创建它。代码看起来不错,只是没有关闭输出流。顺便说一句,这是一个家庭作业吗?你在正确的地方寻找输出文件吗?尝试删除并查看是否重新创建它。代码看起来不错,只是没有关闭输出流。顺便说一句,这是一个家庭作业吗?答案很好,但在关闭流时有点太放松了。无论如何,您必须调用
close()
——不应该。因为这是唯一有效的方法。循环中有一个catch块,它除了输出错误之外似乎什么也不做,然后允许循环再次运行。您应该使用catch来包装循环,并使用out.close()方法添加一个“finally”,以确保您进行清理。答案很好,但在关闭流时有点过于轻松。无论如何,您必须调用
close()
——不应该。因为这是唯一有效的方法。循环中有一个catch块,它除了输出错误之外似乎什么也不做,然后允许循环再次运行。您应该使用catch来包装循环,并使用out.close()方法添加一个“finally”,以确保进行清理。
8 9 +
7 6 -
7 7 * 9 -