day32_学习总结

day32_学习总结

IO流

文件的传输,输入与输出
	按流的方向可以分为:输入流和输出流
	按流的类型可以分为:字节流和字符流
		字符流主要用于文本文件,可以通过记事本直接打开的文件

字节流

OutputStream—字节输出流(抽象类)

使用需要通过其子类创建流对象

FileOutputStream—文件字节输出流:将内容输出到文本文件中

构造方法:
FileOutputStream(File file)//通过指定的文件向其写入数据
FileOutputStream(String name)//通过指定文件的文件名称向其写入数据

方法:
void close()//关闭自己输出流并释放系统资源
void write(int b)//将指定的字节写入文件
void write(byte[] bytes)//将指定的字节输出组写入文件
void write(byte[] bytes,int offset,int len)//将指定的字节数组的一部分写入文件中,offset表示数组初始位置,len表示写入的数组长度

BufferedOutputStream----字节缓冲输出流(高效的字节输出流)

构造方法:
BufferedOutputStream(OutputStream out)//通过字节输出流对象创建高效的字节输出流,

方法:
void close()//关闭自己输出流并释放系统资源
void write(int b)//将指定的字节写入文件
void write(byte[] bytes)//将指定的字节输出组写入文件
void write(byte[] bytes,int offset,int len)//将指定的字节数组的一部分写入文件中,offset表示数组初始位置,len表示写入的数组长度

InputStream—字节输入流(抽象类)

使用时需要通过其子类创建流对象

FileInputStream—文件字节输入流:将文本文件中的内容读取出来

构造方法:
FileInputStream(File file)//通过指定的文件读取数据
FileInputStream(String name)//通过指定文件的文件名称读取数据

方法:
void close()//关闭字节输入流并释放系统资源
void int read()//从指定的文件中读取一个字节
void int read(byte[] bytes)//从指定的文件中读取一个字节数组
void int read(byte[] bytes,int offset,int len)//从指定的文件中读取一个字节数组的一部分,offset表示数组初始位置,len表示写入的数组长度
	注意:在read方法中,如果读取数据已到文件末尾,再读取时会返回-1,表示文件已经读取完毕

BufferedInputStream—字节缓冲输入流对象(高效的字节输入流)

构造方法:
BufferedInputStream(InputStream in)//通过字节输入流创建高效的字节输入流,传递的InputStream对象,可以通过其子类实现
方法:
void close()//关闭字节输入流并释放系统资源
void int read()//从指定的文件中读取一个字节
void int read(byte[] bytes)//从指定的文件中读取一个字节数组
void int read(byte[] bytes,int offset,int len)//从指定的文件中读取一个字节数组的一部分,offset表示数组初始位置,len表示写入的数组长度
	注意:在read方法中,如果读取数据已到文件末尾,再读取时会返回-1,表示文件已经读取完毕
练习:
通过普通字节输入输出流和字节缓冲输入输出流来复制文件,比较运行的速度
	比较可以表明通过字节缓冲输入输出流,并且通过一次读取一个数组的方法来实现,运行速度最快
public class IOStream {
    public static void main(String[] args) throws IOException {
        Long start = System.currentTimeMillis() ;
        copyMp4_4("E://JAVA2011//day31//day_2021_2_25//avi//01_晨写.mp4","copy.mp4");
        Long end = System.currentTimeMillis() ;
        System.out.println(end-start);
    }
    //高效字节输入流,一次数以一个字节数组//218
    public static void copyMp4_4(String s,String s1) throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(s)) ;
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(s1)) ;

        byte[] bytes = new byte[1024] ;
        int len = 0 ;
        while((len = bis.read(bytes)) != -1){
            bos.write(bytes, 0, len);
        }
        bos.close();
        bis.close();

    }
    //高效字节输入流,一次数以一个字节//1941
    public static void copyMp4_3(String s,String s1) throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(s)) ;
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(s1)) ;

        int dy = 0 ;
        while((dy=bis.read())!= -1){
            bos.write(dy);
        }
        bos.close();
        bis.close();

    }
    //字节输入流,一次输入一个字节数组//459
    public static void copyMp4_2(String s,String s1) throws IOException {
        FileInputStream fis = new FileInputStream(s) ;
        FileOutputStream fos = new FileOutputStream(s1) ;

        byte[] bytes = new byte[1024] ;
        int len = 0 ;
        while((len = fis.read(bytes)) != -1){
            fos.write(bytes, 0, len);
        }
        fos.close();
        fis.close();
    }
    //字节输入流,一次输入一个字节//184518
    public static void copyMp4(String s,String s1) throws IOException {
        FileInputStream fis = new FileInputStream(s) ;
        FileOutputStream fos = new FileOutputStream(s1) ;

        int dy = 0 ;
        while((dy=fis.read())!= -1){
            fos.write(dy);
        }
        fos.close();
        fis.close();

    }
}

字符流

Writer—字符输出流(抽象类)

OutputStreamWriter—字符流通向字节流的桥梁–编码

构造方法:
OutputStreamWriter(OutputStream out)//通过字节输出流对象创建默认的字符编码的字符输出流
OutputStreamWriter(OutputStream out,String charsetName)//通过字节输出流对象创建指定的字符编码的字符输出流

方法:
void close()//关闭流,关闭前需要刷新
void flush()//刷新流
void write(int c)//写入单个字符
void write(String str ,int offset ,int len)//写入字符串的一部分
void write(char[] chs , int offset ,int len)//写入字符数组的一部分

FileWriter—写入字符的便捷类

继承自OutputStreamWriter
通过这个便捷类无需创建字节输出流对象
构造方法:
FileWriter(File file)//通过指定的文件来创建对象
FileWriter(String fileName)//通过指定文件的文件名创建对象

方法:
	继承父类中OutputStreamWriter的方法

Reader—字符输入流(抽象类)

InputStreamReader—字节流通向字符流的桥梁–解码

构造方法:
InputStreamReader(InputStream in)//通过默认编码读取字符
InputStreamWriter(InputStream in,String charsetName)//通过指定编码读取字符

方法:
void close()//关闭流
int read()//读取单个字符
int read(char[] chs ,int offset ,int len)//读取字符串数组的一部分

FileReader—字符输入流的便捷类

无需通过InputStream来创建对象
构造方法:
FileReader(File file)//通过指定的文件来创建对象,读取数据
Filereader(String fileName)//通过指定文件的文件名创建对象,读取数据

方法:
	继承父类中InputStreamWriter的方法
上一篇:day32_创建Mysql账户,以及python操作Mysql


下一篇:AcWing寒假每日一题——Day32数字统计