我已经看了一些如何用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
答案 0 :(得分:1)
当您使用write
时,Java不会写入文件,它会将您要写入的所有数据存储在缓冲区中,直到您flush
或close
。
在您的情况下,将建议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()`。