简单的文件写入,但它不起作用

时间:2013-11-05 19:00:54

标签: java filewriter bufferedwriter

我已经看了一些如何用Java写入文件的例子,我认为我做得对......显然不是。这里有什么问题,甚至没有创建要写入的文件。没有错误,只是没有写入文件。

File inputFile = new File("pa2Data.txt");
File outputFile = new File("pa2output.txt");
Scanner fileIn = new Scanner(inputFile);
BufferedWriter fout = new BufferedWriter(new FileWriter(outputFile));

while(fileIn.hasNext()){
    String theLine = readFile(fileIn);
    fout.write("Infix expression: " + theLine + '\n');
    postfixExpression = infixToPostFix(theLine);
    String op = postfixExpression.toString();
    fout.write("Postfix Expression: " + op + '\n');

    theLine = readFile(fileIn);
    StringTokenizer st = new StringTokenizer(theLine);
    for(int i = 0; i < theValues.length; i++)
        theValues[i]  = Integer.parseInt(st.nextToken());
        int answer = postfixEval(postfixExpression, theValues);
        fout.write("Answer: " + answer + '\n' + '\n'); 
    }
    fileIn.close();
    fout.close();

}//end main

2 个答案:

答案 0 :(得分:1)

当您使用write时,Java不会写入文件,它会将您要写入的所有数据存储在缓冲区中,直到您flushclose。 在您的情况下,将建议flush,因为您写入文件并读取它以进行更改,这会导致在您编写新数据之前读取数据。

在阅读文件之前,您需要使用flush。 这意味着在theLine = readFile(fileIn);

之前

答案 1 :(得分:1)

我将您的代码缩减为一个可以继续使用的工作示例...

public class Test{
  public static void main(String[] args){
    try {
      File inputFile = new File("pa2Data.txt");
      File outputFile = new File("pa2output.txt");
      Scanner fileIn = new Scanner(inputFile);
      BufferedWriter fout = new BufferedWriter(new FileWriter(outputFile));

      while(fileIn.hasNext()){
        String theLine = fileIn.next();
        fout.write("Infix expression: " + theLine + '\n');
      }
      fileIn.close();
      fout.close();
   } catch(Exception e){
      e.printStackTrace();
   }
 }

}

请注意,我在while循环的条件下更改了readFile(fileIn); to fileIn.next(); to read from the Scanner. Did so, because you used hasNext()`。