从堆栈写入文件

时间:2013-09-14 07:46:54

标签: java file stack filewriter

人。我正在尝试从堆栈写入文件。堆栈是通过读取另一个文件创建的。我正在使用堆栈,以便我可以反转我读入的文件。要读取和写入的文件名来自命令行。 这就是我实现堆栈的方式:

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;这是暂时的)。 “没有成功。”没打印所以我现在知道不是那样的。我在这做错了什么?任何帮助表示赞赏。

2 个答案:

答案 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()