java基础---IO流--复制文件(面试题)

  1. 普通字节流,一次读写一个字节(FileInputStream && FileOutputStream)
  2. 普通字节流,一次读写一个字节数组
  3. 高效字节流,一次读取一个字节(BufferedInputStream && BufferedOutputStream)
  4. 高效字节流,一次读取一个字节数组

  1. 普通字符流,一次读取一个字符(FileReader && FileWriter)
  2. 普通字节流,一次读取一个字节数组
  3. 高效字节流,一次读取一个字节(BufferedReader && BufferedWriter)
  4. 高效字节流,一次读取一个字节数组
  5. 高效字节流,一次读一行
BufferedReader#readeLine();读取一行
BufferedWriter#writer(String line)一次写一行
BufferedWriter#newLine()根据操作系统输出换行

读取src下面的文件,需要写入的路径是“src/aaa.text” ,直接写名字默认是项目目录下

package io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class TestIo {
    /*
     * 将utf-8.txt(utf-8编码写的)的内容复制到gbk.txt(gbk编码写的)文件中
     */
    public static void main(String[] args) throws IOException{
        //1、创建输入流对象,封装数据源,传一个参数就是默认编码转换,传两个就是第二个就是指定编码转换
        FileInputStream file1 = new FileInputStream("Utf-8.txt");
        //把字节流转换为字符流
        InputStreamReader isr = new InputStreamReader(file1,"utf-8");
        //实际开发中的写法
        //InputStreamReader isr = new InputStreamReader(new FileInputStream("Utf-8.txt"),"utf-8");

        //2、创建输出流对象,封装目的地文件
        FileOutputStream file2 = new FileOutputStream("gbk.txt");
        OutputStreamWriter osw = new OutputStreamWriter(file2,"gbk");
        //OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("gbk.txt"),"gbk");

        //3、定义变量,用来记录读取到的有效字符数
        //一次读取一个指定长度的字节数组,并将读取到的内容放到字节数组中,并且返回读取到的有效字节数,读不到返回-1;
        int len = 0;
        char[] chs = new char[1024];
        //4、循环读取文件,只要条件满足,就一直读取下去,并将读取到的有效字符赋给变量
        while((len = isr.read(chs)) != -1){
            //5、将读取到的内容写入到文件中
            osw.write(chs,0,len);
        }       
        //6、关闭,释放资源
        isr.close();
        osw.close();
        System.out.println("复制成功");
    }
}

高效流

package io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class IOEffiency {
    public static void main(String[] args) throws IOException{
        //创建字符流输入对象
        FileReader fr = new FileReader("utf-8.txt");
        //高效字符输入流,可以一次读取一行数据
        BufferedReader br = new BufferedReader(fr);

        //创建字符流输出对象
        FileWriter fw = new FileWriter("gbk.txt");
        //高效字符输出流,可以一次输出一行
        BufferedWriter bw = new BufferedWriter(fw);

        //用来记录读取的内容,因为是一行,得到的是String类型
        String line = "";
        //这里得到的不是int,所以要判断是否为null
        while((line = br.readLine()) != null){
            bw.write(line);
        }
        //高效流就是对普通流的升级,所以关闭高效流即可。
        //高效流就是化了妆的普通流,本质是同一个人。
        br.close();
        bw.close();
    }
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值