day25知识点总结:字符输出流FileWriter 字节/字符缓冲流 转换流

字符输出流

   //1.创建 字符输出流 FileWriter写
        FileWriter fw=new FileWriter("D:\\java\\javacto\\aa.txt",true);
        //2.写 字节流使用的方法 字符流就可以使用
        fw.write(97);
        fw.write(98);
        //3.换行再写
        fw.write("\r");
        fw.write("直接写文字");
        //4.释放资源
        fw.close();

运行截图(注:第一行为之前的记录)
在这里插入图片描述

        //1.创建字符输出流 FileWriter写
        FileWriter fw=new FileWriter("D:\\java\\javacto\\aa.txt");
        //2.将字符串 转为 char类型
        char[] c="好好学java".toCharArray();
        //3.只将其中一部分写入
        fw.write(c,2,2);
        //4.释放资源
        fw.close();

运行截图:
在这里插入图片描述

//1.创建 字符输出流 FileWriter写
        FileWriter fw=new FileWriter("D:\\java\\javacto\\aa.txt");
        //2.定义数组
        String strs[]={"我","跟","老","师","学","Java"};
        //3.循环遍历
        for(String s:strs){
            fw.write(s);
            //fw.write("\r");
        }
        //4.释放资源
        fw.close();

运行截图:
在这里插入图片描述

异常处理

示例代码

public class Test002 {
    public static void main(String[] args) throws IOException {
        test001();
    }

    private static void test001() throws IOException {
        FileWriter fw=null;
        try{
            int i=1/0;
            //1.创建 字符输出流 FileWriter写
            fw=new FileWriter("D:\\java\\javacto\\aa.txt");
            //2.定义数组
            String strs[]={"我","跟","老","师","学","Java"};
            //3.循环遍历
            for(String s:strs){
                fw.write(s);
                //fw.write("\r");
            }
        }catch(IOException e){
            e.printStackTrace();
        }finally {
            try{
                if(fw!=null){
                    //4.释放资源
                    fw.close();
                }
            }catch (IOException e){
                e.printStackTrace();
            }

        }


    }
}

缓冲流

对4个基本FIleXXX的增强,按照数据类型分类:
字节缓冲流:BufferedInputStream、BufferedOuputStream
字符缓冲流:BufferedReader、BufferedWriter

		//1.创建字节缓冲输入流
        FileInputStream fis=new FileInputStream("D:\\java\\javacto\\aa.txt");
        BufferedInputStream bis=new BufferedInputStream(fis);
        
        //2.创建字节缓冲输出流
        BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("D:\\java\\javacto\\aa.txt"));

字节流复制文件耗时

        //记录开始时间
        long start=System.currentTimeMillis();//获取当前系统时间
        //1.1创建字节输入流
        FileInputStream fis=new FileInputStream("D:\\毕业设计\\DataSet.rar");
        //1.2创建字节输出流
        FileOutputStream fos=new FileOutputStream("D:\\java\\javacto\\CopySet.rar");
        //2.定义数组 每次读多少个字节
        byte[] b=new byte[1024];
        int len;
        //3.循环读取
        while ((len=fis.read(b))!=-1){
            //4.写
            fos.write(b,0,len);
        }
        //5.释放资源
        fos.close();
        fis.close();
        //记录结束时间
        long end=System.currentTimeMillis();//获取当前系统时间

        System.out.println("总共耗时"+(end-start)+"毫秒");

结果截图
在这里插入图片描述

字节缓冲流复制文件耗时时间对比
使用字节流复制同一文件

//1.记录开始时间
        long start=System.currentTimeMillis();//获取当前系统时间
        //1.1创建字节缓冲输入流  读
        BufferedInputStream bis=new BufferedInputStream(new FileInputStream("D:\\毕业设计\\DataSet.rar"));
        //1.2创建字节缓冲输出流  写
        BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("D:\\java\\javacto\\CopySet.rar"));
        //2.定义数组 每次读多少个字节
        byte[] b=new byte[1024];
        int len;
        //3.循环读取
        while ((len=bis.read(b))!=-1){
            //4.写
            bos.write(b,0,len);
        }
        //记录结束时间
        long end=System.currentTimeMillis();//获取当前系统时间

        System.out.println("总共耗时"+(end-start)+"毫秒");

运行截图:
在这里插入图片描述
字符缓冲流
特有方法:一次读一行 readLine()方法
使用

 //创建 字符缓冲流输入流 读
        FileReader fr=new FileReader("D:\\java\\javacto\\aa.txt");
        BufferedReader br=new BufferedReader(fr);
        
        //创建字符缓冲输出流 写
        BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\java\\javacto\\aa.txt"));

使用readLine()方法读

 //1.创建字符缓冲输入流 读
        BufferedReader br=new BufferedReader(new FileReader("D:\\java\\javacto\\aa.txt"));
        //2.一行一行读 读到最后没有就返回null
        System.out.println(br.readLine());
        System.out.println(br.readLine());
        System.out.println(br.readLine());
        //3.关闭资源
        br.close();

运行截图:
在这里插入图片描述
循环遍历方式读

 //1.创建字符缓冲输入流 读
        BufferedReader br=new BufferedReader(new FileReader("D:\\java\\javacto\\aa.txt"));
        //2.定义一个字符串
        String lineStr=null;
        //3.循环遍历
        while ((lineStr=br.readLine())!=null){
            System.out.println(lineStr);
        }
        //3.关闭资源
        br.close();

运行截图同上
向文件中写内容

//1.创建字符缓冲输出流 写
        BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\java\\javacto\\aa.txt"));
        //2.写
        bw.write("我要学java");
        //换行
        bw.newLine();
        bw.write("跟老师学就可以了");

        //3.释放资源
        bw.close();

运行截图
在这里插入图片描述

转换流

读取非UTF-8格式的文件

		 //文件格式为ANSI
        FileReader fw=new FileReader("D:\\java\\javacto\\tt.txt");
        int read;
        while ((read=fw.read())!=-1){
            System.out.println((char) read);
        }

运行截图
在这里插入图片描述
读取文件(使用转换输入流InputStreamReader)

 		//1.转换输入流 因为存的是GBK 读的时候也是GBK
        InputStreamReader isr=new InputStreamReader(new FileInputStream("D:\\java\\javacto\\tt.txt"),"GBK");
        //2.定义数组 每次读多个文字
        char[] c=new char[10];
        int len;
        //3.循环遍历 
        while ((len=isr.read(c))!=-1){
            System.out.print(new String(c,0,len));
        }
        //4.释放资源
        isr.close();

运行截图
在这里插入图片描述
向文件中写内容(可以指定格式)

		//写的时候可以指定编码格式
        FileOutputStream fos=new FileOutputStream("D:\\java\\javacto\\tt.txt");
        OutputStreamWriter oos=new OutputStreamWriter(fos,"UTF-8");
        //写
        oos.write("跟之前一摸一样,之前怎么写,现在就怎么写");
        //释放资源
        oos.close();

运行截图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我来为您整理一下 File 类、字节流字符的相关知识点。 1. File 类 File 类是 Java 中用于操作文件和目录的类,可以用来创建、删除、重命名、遍历目录等操作。常用的方法有: - exists():判断文件或目录是否存在 - isFile():判断是否为文件 - isDirectory():判断是否为目录 - createNewFile():创建新文件 - mkdir():创建新目录 - delete():删除文件或目录 - renameTo():重命名文件或目录 - list():获取目录下的所有文件名 - listFiles():获取目录下的所有文件对象 2. 字节流 字节流是以字节为单位进行读写的,常用的字节流有 FileInputStream 和 FileOutputStream。它们可以用来读写二进制文件,如图片、音频、视频等。常用的方法有: - read():读取一个字节 - write():写入一个字节 - read(byte[]):读取一定数量的字节字节数组中 - write(byte[]):写入字节数组中的数据 - close():关闭 3. 字符 字符是以字符为单位进行读写的,常用的字符有 FileReader 和 FileWriter。它们可以用来读写文本文件,如 .txt 文件。常用的方法有: - read():读取一个字符 - write():写入一个字符 - read(char[]):读取一定数量的字符字符数组中 - write(char[]):写入字符数组中的数据 - close():关闭 总的来说,字节流适用于读写二进制文件,字符适用于读写文本文件。同时,在使用时应该注意及时关闭,以防止资源浪费和文件损坏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值