JavaSe之应用输入输出字节流完成简单的文件复制 —— IO流笔记(二)

继昨天介绍的IO流之后,今天有给大家带来了干货。由于昨天是用HTML编辑器书写的博客,在添加代码模块我还不是很了解,所以,昨天的代码看着很不舒服,再次向大家致以歉意!因此,今天我换了一种编辑器来完成今天的学习内容。
在平时的学习和工作中,我们在复制文件或者视频或者图片的时候都习惯用 ctrl + C(复制建)和ctrl + V(黏贴键)来完成。但是,如果在这里可以用JavaSe所书写的程序来完成文件或者图片或者视频的复制,是不是感觉非常不可思议呢?接下来,就给大家看一看用JavaSe是如何实现这部分操作的。首先先给大家用文字介绍一下整体的实现过程,再展出代码,供大家参考。

- 文字描述思路

  1. 文件要复制,肯定存在从哪里来,要去哪里的问题,这个问题该如何解释呢?在这里,我们可以创建两个文件类型的对象,一个作为源文件,一个作为复制文件;
  2. 要创建程序与文件沟通交流的路径,那就是两个输入输出文件的对象。此处,源文件作为输入文件,因为程序要读取它的内容,复制文件为输出文件,程序要写出它的内容;
  3. 以上两步操作做完之后,就要开始内部的架桥工作了。这一步需要进行写入操作,而写入的方式是以字节数组为单位进行的;
  4. 最后进行关闭文件操作。为什么要关闭文件呢?首先如果不关闭文件可能会出现内存泄漏问题;其次,IO流不属于Java内存资源,因此它不会被Java垃圾回收机制自动回收,而是需要程序员进行手动回收。

代码展示

package com.mec.about_copyFile;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopy {
    public static void main(String[] args) {
        //1.先创建一个程序输入的文件和程序输出的文件
        //这里要求源文件也就是被复制的文件必须存在
        //而即将被复制出来的新文件可以不存在,它会自己创建;
        File inFile = new File("One.docx");
        File outFile = new File("Two.docx");

        //2.创建
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
                fis = new FileInputStream(inFile);
                fos = new FileOutputStream(outFile);

                //3.创建用于存放文件的字节行数组于记录他长度的变量;读出和写入操作
                byte[] b = new byte[2014];
                int len;
                while((len = fis.read(b)) != -1) {
                    fos.write(b, 0, len);
                }
        } catch (IOException e) {
            e.printStackTrace();
        }finally { 
            //5.关闭数据流,因为数据流不属于java内存资源,所以流不会被自动回收,要手动回收
            if(fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }       
    }
}

以上代码块便是实现简单文件复制的代码。那我们来看看执行的结果是什么:
首先看一下未执行前工程下的目录,我在这里用Eclipse编辑器编辑:

  • 运行之前的工程目录:
    这里写图片描述

  • 运行之后,并刷新之后的工程目录:
    这里写图片描述

  • 打开源文件与复制文件,大家看一看,这是见证奇迹的时刻:
    这里写图片描述
    整个过程如上述所示,不知道大家发现了没有,IO流的操作都是以程序为主的,大概可以用如下的箭头来说说明:

  • 输出流:程序 —— > 文件;
  • 输入流:文件 —— > 程序;
    输入是由程序输入,输出也是由程序输出,这个概念大概是掌握IO流的操作所不可或缺的理论基础!
    今天先学到这里!下次再见~
    图片来源:视觉中国
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值