讲师笔记,Java基础学习之路之day21——IO流的方法

FileInputStream
        构造方法:
            FileInputStream(String path) 参数path:所读取文件的路径名
            FileInputStream(File file) file:所读取文件的对象
        常用方法:
            int read() 
                一次读一个字节 返回的int值是读到的数据
            int read(byte[] b) 
                一次读b.length个字节,b是读到的数据,返回的int是读到的数据长度
            int read(byte[] b, int off, int len) 
                一次读取len个字节,将数据放入数组下标为off位置开始 
                返回的int是读到的数据长度
            int available() 
                文件未读部分的大小
                
    FileOutputStream
        构造方法:
            FileOutputStream(String path)
            FileOutputStream(File file)
            FileOutputStream(String path,boolean append)
            FileOutputStream(File file,boolean append)
                如果append为true表示追加数据,在写入前(调用构造方法)不会清空文件内容
                如果append为false或者 不写append参数:在写入前(调用构造方法)会清空文件内容
        常用方法:
            write(int b)
                一次写一个字节,b表示的是写入的数据本身
            write(byte[] buf)
                一次将buf.length个字节 从buf数组写入文件中
            ***write(byte[] buf,int off,int len)
                每次从buf数组的off位置开始取len个字节写入到文件中
        
    ByteArrayInputStream
        从字节数组中读取数据    
    ByteArrayOutputStream    
        将数据写入到一个字节数组中
    
    BufferedInputStream
    BufferedOutputStream
        常用方法:
            flush():刷新缓冲区,将缓冲区的数据写入到目标文件
            close():1.先调用flush()刷新   2.关闭所包装的流 out.close()
    
    BufferedOutputStream 和  FileOutputStream 异同:
    相同点:都是输出字节流,用于写数据
    不同点:
        BufferedOutputStream
            1.写文件不是直接写入目标文件,先写入缓冲区,通过flush()刷新缓冲区数据到目标文件
            2.是包装流,操作的是一个节点流
        FileOutputStream
              1.写文件直接写入目标文件
              2.是节点流 操作的是一个文件
    
    ------------------------------------------------------
    FileReader
        常用方法:
            int read()
                一次读一个字符,int是读到的数据
            int read(char[] b)
                一次读b.length个字符  b是读到的数据 返回的int是读的长度
            int read(char[] b,int off,int len)
            
    FileWriter
        常用方法:
            write(int b)
                将指定字符b写入文件中
            write(char[] b)
                将b.length个字符从指定b数组写入到文件中
            write(char[] b,int off,int len)
                把字符数组b中从off位置开始取len个字符写入到文件中
            write(String str) 
                将字符串str写入到文件中
            write(String str, int off, int len)
    
    如何解决乱码问题:
        保证文件的编码格式 和 流的编码一致
    
    桥梁流:
        将字节流 按照 指定的charset 转成 字符流
        InputStreamReader  (extends Reader)
        OutputStreamWriter
        构造方法:
            InputStreamReader(inputStream in,charset cs)
    
    BufferedReader BufferedWriter的特点:
        可以读或者 写一行数据
        BufferedReader: String readLine() 每次读取一行数据
        BufferedWriter: newLine() 写入一个换行符
                
    
    ----------------------------------------------------
    1. 读取gbk格式的a.txt文件内容 拷贝到utf8格式的b.txt文件中
    
    2. 写一个方法,要求从控制台输入一个文件的路径与 要拷贝到的目录 进行文件拷贝
        String src = "d:/a/1.txt"
        String dest = "d:/b"
    
    3. 分割一个原始文件(file.src)的大小是20.2KB,按照指定分割文件大小是5kb,分别分割到5个文件中(前4个文件大小为5kb,最后一个包含了剩余字节)
        分割后的5个文件名为file1.src ... file5.src
        
        public static void split(String path,int size)
        path: 原始文件名
        size: 指定分割大小(单位是字节) 5kb=5*1024字节
    
       文件合并:
       public static void merge(String[] fileparhs,String dest)
        fileparhs : 分割后的文件名数组
        dest:合并后的文件路径
    
    ------------------------------------------------
    对象流

猜你喜欢

转载自blog.csdn.net/u011189148/article/details/81417189