bw是缓冲流,使用bw.write 后,数据并没有直接写入txt文件中,而是在bw的缓冲区内,所以这时先关闭输出流fw,则txt中就是空的了,如果先关闭bw,则缓冲流会在内部先调用bw.flush();将缓冲区的内容输出到文件中,所以txt才有内容。要解决这个问题,需要在bw.write 后显示调用bw.flush();这样先关闭那个流都一样了
api中的解释都是
关闭此流,但要先刷新它。在关闭该流之后,再调用 write() 或 flush() 将导致抛出 IOException。关闭以前关闭的流无效。