A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package demo01;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class Demo01 {
        public static void main(String[] args) throws IOException {
                ArrayList<String> list = new ArrayList<String>();
                list.add("hello");
                list.add("world");
                list.add("java");
                BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
                for (String s : list) {
                        bw.write(s);
                        bw.newLine();
                }
                System.out.println("数组写到记事本完毕!");
        }

}


16 个回复

正序浏览
Hblack 来自手机 初级黑马 2016-9-23 12:26:35
16#
用字节直接读写,不关流也不影响写,但是带了缓冲不关流如果在没有调用刷新方法的情况下,未写满缓冲区的部分就滞留在了缓冲区。解决办法可以调用刷新功能,当然直接close也可以,因为close方法会刷新一次再关

最后,流一定要关,内容滞留可以刷新出,但是不关流会一直吃着资源
回复 使用道具 举报
飞儿-程序猿 发表于 2016-9-22 20:41
刷新流,最好还是写一次刷新一次,最后可以不刷新,关闭流有自主刷新一次功能 ...

嗯,也可以这样
回复 使用道具 举报
litianji2016 发表于 2016-9-22 11:40
[mw_shl_code=java,true]public static void main(String[] args) throws IOException {
          ArrayLi ...

刷新流,最好还是写一次刷新一次,最后可以不刷新,关闭流有自主刷新一次功能
回复 使用道具 举报
主要是流没刷新,关闭不是主要的,一般关闭前都会自主刷新一次,所以关闭前的刷新可以省略,其他的写一次刷新一次
回复 使用道具 举报
还要这样?还有这个说法的
回复 使用道具 举报
学习一波。。。。。。。。。
回复 使用道具 举报
[Java] 纯文本查看 复制代码
public static void main(String[] args) throws IOException {
          ArrayList<String> list = new ArrayList<String>();
          list.add("hello");
          list.add("world");
          list.add("java");
          File f=new File("a.txt");
          f.createNewFile();
          System.out.println(f.exists());
          BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
          for (String s : list) {
                  bw.write(s);
                  bw.newLine();
          }
          bw.flush();//清空缓冲区,把流压入文件
          
          bw.close();//关闭流
          System.out.println("数组写到记事本完毕!");
  }
回复 使用道具 举报
LShu 中级黑马 2016-9-22 00:09:14
9#
少了关流这一步
回复 使用道具 举报
恩,忘记关闭资源了,bw.close(); 缓冲流的数据没刷新出来
回复 使用道具 举报
关流啊,大兄弟!
回复 使用道具 举报
谢谢大家,以后注意
回复 使用道具 举报
没有关闭流,写入的数据流仍然在缓冲区中。当关流的时候,会将缓冲区的内容刷新出来。
回复 使用道具 举报
没有关流,大忌
回复 使用道具 举报
juestdoit 发表于 2016-9-20 23:21
ArrayList list = new ArrayList();
                list.add("hello");
                list.add("world");

我刚试了一下,确实是,谢谢指导
回复 使用道具 举报
ArrayList<String> list = new ArrayList<String>();
                list.add("hello");
                list.add("world");
                list.add("java");
                BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
                for (String s : list) {
                        bw.write(s);
                        bw.newLine();
                }
                bw.close();
               
                System.out.println("数组写到记事本完毕!");


你最后没有关流.输入内容存放在缓冲区里了......
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马