IO流、文件的拷贝

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

IO流可以实现对外部操作系统的输入和输出,包括读写文件,文件拷贝,文件夹拷贝,上传下载…


一、IO流的分类

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

1.按照流向划分 :

以程序为中心:
			 输入流:从节点到 java 内存
			 输出流:从 java 内存到节点

2.按照单元划分 :

            字节流 : 数据以字节为单位  -->处理数据是音频、视频、doc、文本等一切为字节流
            字符流 : 数据以字符为单位  -->只能操作纯文本文件: 

3.按照功能划分 :

            节点流 :  真实做读入写出的流
            处理流(功能流) : 增强节点流的功能,提高节点流的性能
    以上的分类都是相辅相成的

二、IO流操作步骤

1.与数据源文件创建联系

代码如下:

File f = new File("D://1.txt");

2.创建输入、输出流

输入、输出字节流:

//FileInputStream(String name) 通过打开与实际文件的连接来创建FileInputStream ,该文件由文件系统中的路径名name命名。
//FileInputStream(File file) 通过打开与实际文件的连接来创建FileInputStream ,该文件由文件系统中的File对象file命名。
        InputStream is = new FileInputStream("D://a.txt");
        OutputStream op = new FileOutputStream(f,true);//true表示可以在原文件上追加
//byte[] readAllBytes() 从输入流中读取所有剩余字节。
        byte[] data = is.readAllBytes();
        System.out.println(new String(data));

输入、输出字符流:

        Reader in = new FileReader("D://1.txt");
        Writer ou = new FileWriter("D://09.txt");

3.读写操作

byte[] car = new byte[1024];
        int len = -1;  //记录每次读入到字节数组中数据个数,如果读取不到返回-1
        while((len=is.read(car))!=-1){
            //4.使用数据
            System.out.println(new String(car,0,len));
        }

4.使用数据,捕获异常

try (inputStream;outputStream){
            byte[] car=new byte[1024];
            int len =-1;
            while((len= inputStream.read(car))!=-1){
                outputStream.write(car,0,len);
            }
            outputStream.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

5.(刷出)关闭

.flush();
.end()

三、文件的拷贝

3.1字节数组的拷贝

 InputStream is = new FileInputStream("D://1.txt");
        OutputStream os = new FileOutputStream("D://24.txt");
        try (is;os){
            byte[] car=new byte[1024];
            int len =-1;
            while((len= is.read(car))!=-1){
                os.write(car,0,len);
            }
            os.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

3.2字符数组的拷贝

 Reader in = new FileReader("D://1.txt");
        Writer ou = new FileWriter("D://09.txt");
        char[] car = new char[1024];
        int len = -1;
        while((len=in.read(car))!=-1){
            ou.write(car,0,len);
        }
        ou.flush();
        ou.close();
        in.close();
    }

四、 缓冲流Buffered :

	 提高节点流的读写效率

4.1 字节缓冲输入/输出流

        Buffer_Char("D://2.txt","D://3.txt");
    }
    //字节缓存输入/输出流
    public static void  Buffer_Byte(String is,String os) throws IOException {
        //1.创建流
        InputStream inputStream = new BufferedInputStream(new FileInputStream(is));
        OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(os));
        //2.读写
        byte[] car = new byte[1024];
        int len = -1;//以读取的每行内容
        while((len=inputStream.read(car))!=-1){
            outputStream.write(car,0,len);
        }
        //3.缓存
        outputStream.flush();
        //4.关闭
        inputStream.close();
        outputStream.close();
    }

4.2 字符缓冲输入/输出流

 public static void Buffer_Char(String iss,String oss) throws IOException {
        BufferedReader in = new BufferedReader(new FileReader(iss));
        BufferedWriter out = new BufferedWriter(new FileWriter(oss));
        String massage = null;
        while ((massage=in.readLine())!=null){//读取每行内容
            out.write(massage);
            out.newLine();
        }
        //刷出
        out.flush();
        //关闭
        out.close();
        in.close();
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值