黑马程序员 java学习笔记2-IO流

本文详细介绍了Java中文件I/O流的基本概念、字节流与字符流的区别、FileReader与FileWriter的使用方法、文件数据的读写、续写、拷贝以及缓冲流的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---------------------- android培训java培训、期待与您交流! ----------------------

IO流就是input、output的简写,也就是说输入输出流,它是用来处理设备之间的数据传输的,java对数据的操作都是通过流的方式,流按操作数据可分为字符流和字节流,按流向的话分为输入输出流,并且java操作流的对象都在IO包里。

字节流的抽象基类: InputStream(读进来)、OutputStream(写出去)

字符流的抽象基类:Reader、Writer

(1)、FileReader(Reader的子类)和FileWriter(Writer的子类)的例子

File f = new File("E:\\aa.txt");
        FileReader fr=null;
        FileWriter fw=null;
        try{
        if(f.exists())
        {//文件存在
     //       f.delete();
     //读数据

          fr = new FileReader(f);       // 创建一个文件流读取对象,和指定的文件相关联

  //一次读一个字符

              while(true)
     {
     int i = fr.read();  //读取一个字符
     System.out.print((char)i);
     if(i==-1)             //当fr.read()返回为-1时,表示已经到了文件末尾
     {
     return;
     }
     }

          //进行字符数组进行读取

       char [] buf = new char[1024];
          int num = fr.read(buf);          //有一个数组参数,则返回的是文件的数据个数
          System.out.println(new String(buf,0,num));
          fr.close();

        }else{//文件不存在
            //写进去数据,如没有该文件,会自动创建
            fw = new FileWriter(f);         
            fw.write("我是中国人");
            fw.write("\r\n");
            fw.write("我也是");
            fw.flush();         //刷新文件缓存
        }
        }catch(Exception e)
        {
            System.out.println(e.toString());
        }
        finally{
            try {
                if(fw!=null)
                {
                    fw.close();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

(2)、对文件数据的续写

File f = new File("E:\\aa.txt");

//传递一个true参数时,表示不覆盖文件,而是在文件的末尾处进行续写

FileWriter  fw = new FileWriter(f,true);

(3)、实现文件的拷贝

原理:1,在目标处创建一个和源一样的文件,用以存储源文件的数据

2,定义读取流和源文件相关联

3,通过不断的读写,完成文件的数据复制

4,close();关闭资源

        FileReader fr = new FileReader("E:\\aa.txt");      //读
char [] buf = new char[1024];
        int num = fr.read(buf);
        
        FileWriter fw = new FileWriter("E:\\bb.txt");          //写
        fw.write(buf,0,num);
        fw.flush();
        
        fr.close();
        fw.close();                 //需要捕捉异常,这里免写了,统一throws 

(4)、BufferedReader、BufferedWriter    将文本写入到流,缓冲各个字符,从而提供单个字符、数组的高效读写,

//  构造方法1、BufferedWriter(Writer  out),2、BufferedWriter(Writer  out,int sz)

// 在创建缓冲区之前,必须有流对象

//该对象提供了一个跨平台的换行符,newLine();

        FileWriter fw = new FileWriter("E:\\aa.txt");
        BufferedWriter bufw = new BufferedWriter(fw);
        bufw.write("asdsa");
        bufw.flush();
        bufw.close();

 

        FileReader fr = new FileReader("E:\\aa.txt");
        BufferedReader bufr = new BufferedReader(fr);
/*        char [] buf = new char[1024];
        int num = bufr.read(buf);
        System.out.println(new String(buf,0,num));*/
        
        String line=null;
        while((line=bufr.readLine())!=null)     //readLine()读取文本文件的一行
        {
            System.out.println(line);
        }
        bufr.close();

---------------------- android培训java培训、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值