人。我正在尝试从堆栈写入文件。堆栈是通过读取另一个文件创建的。我正在使用堆栈,以便我可以反转我读入的文件。要读取和写入的文件名来自命令行。 这就是我实现堆栈的方式:
while(read.hasNext()) {
stack.push(read.next());}
我应该写入堆栈的其他文件的代码:
FileWriter w = null;
try {
w = new FileWriter(new File(args[1]));
} catch (IOException e) {
e.printStackTrace();
}
if (!stack.isEmpty()) { //this was a while statement
try {
w.write(stack.pop());
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("Didn't make it.");
}
我遇到的问题是当我运行程序时,创建了我要写入的文件,但没有任何内容写入文件。我原本以为我的堆栈中没有任何内容(这就是为什么我将我的while语句改为if;这是暂时的)。 “没有成功。”没打印所以我现在知道不是那样的。我在这做错了什么?任何帮助表示赞赏。
答案 0 :(得分:2)
在 w.write(stack.pop()); 之后调用fish()方法:
w.write(stack.pop());
w.flush();
您可以返回 while 语句。最后,请致电 w.close();
答案 1 :(得分:1)
方法stack.pop返回一个Object,如果你没有像这样在声明时指定
Stack<String> stack = new Stack<String>();
写完后你应该使用w.flush()
,你也应该使用w.close
。
你应该将while语句嵌入try块中 例如
try {
while(!stack.isEmpty()) {
w.write(stack.pop()); // assuming you have declared it as Stack<E>
}
w.flush();
w.close();
} catch(IOException e) {
e.printStackTrace();
}
修改强>
在关闭它之后完成FileWriter
之后,必须嵌套在try catch块中以捕获任何IOException
(如果抛出)。如果你在while循环中的try catch块中使用w.write()
方法,那么在while
循环迭代结束后你必须构建另一个try catch来放置w.close()