1

我是 java 的初学者,并为后缀评估编写了以下问题。虽然该程序适用于控制台 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");}
        }
      }

文件 input00.txt 包含

8 9 +
7 6 -
7 7 * 9 -
4

3 回答 3

6

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

于 2012-08-17T07:42:44.343 回答
2

您必须关闭流。尝试out.close()

于 2012-08-17T07:41:17.673 回答
0

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

于 2012-08-17T07:54:14.690 回答