JAVA_IO_原理与分类_简单实现文件的复制(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40646143/article/details/84059948

一概念

流:流动,流向,从一端流向另一端,这俩端为源头与目的地

程序与文件| 数组 | 网络连接 | 数据库 | 都是以程序为中心

IO流的分类

流向分为 :输入流 与输出流

数据分为: 字节流:以二进制的方式处理数据,可以处理一切文件,包括纯文本 ,doc ,音频,视屏等等

                字符流:文本文件只能处理纯文本

字节流与字符流(重点)

字节流:   输入流 InputStream   

常用方法

close() 

关闭此文件输入流并释放与此流有关的所有系统资源
read(byte[] b)    从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
read(byte[] b, int off, int len)  从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。

               源头文件FileInputStream

               输出流 outputStream 

常用方法
close()  关闭此输出流并释放与此流有关的所有系统资源。
write(byte[] b)    将 b.length 个字节从指定的 byte 数组写入此输出流。
write(byte[] b, int off, int len)  将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。
flush()  刷新此输出流并强制写出所有缓冲的输出字节。

                 源头文件 FileOutputStream

字符流 

输入流 Reader

常用方法
read(char[] cbuf) 
 
将字符读入数组。
 

read(char[] cbuf, int off, int len) 

将字符读入数组的某一部分。
close() 关闭该流并释放与之关联的所有资源。

源头文件 FileReader 

输出流 Writer

常用方法
  void close()   关闭此流,但要先刷新它。
flush()   刷新该流的缓冲。
write(char[] cbuf)  写入字符数组。
write(char[] cbuf, int off, int len)   写入字符数组的某一部分。


源头文件 FileWriter 

字节流读取与写入

需求:

将a文件内容写入到b文件中  如下
public static void main(String[] args) {
        FileInputStream inputStream = null;
        FileOutputStream outputStream = null;
        try {
            //建立连接
            inputStream = new FileInputStream(new File("E:/jianli7472/a.txt"));
            //创建缓冲区
            byte[] bytes = new byte[1024];
            //每次读取的长度
            int len = 0;
            while (-1 != (len = inputStream.read(bytes))) {
                //append 为true 如果文件存在内容不会覆盖 默认为false 如果存在内容直接覆盖
                FileOutputStream fileOutputStream = new FileOutputStream(new File("E:/jianli7472/b.txt"), true);
                //输出到指定的文件 长度为 0 -len的长度
                fileOutputStream.write(bytes, 0, len);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //关闭资源
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (outputStream != null) {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

 

猜你喜欢

转载自blog.csdn.net/qq_40646143/article/details/84059948