Java IO流 实现文件复制

2023-05-16

Java IO流 实现文件复制

  • 思路

1、将指定文件转换成输入流
2、创建数组接收输入字节
3、将文件复制想要存放的轮径创建输出流
4、将输入流的字节输出出去

  • 实现
	  //创建输入和输出流
      FileInputStream fis = new FileInputStream("D:11.mp4");
      FileOutputStream fos = new FileOutputStream("D:1212.mp4");
      //创建字节接收数组
      byte[] b = new byte[1024];
      //while循环读写字节 当read()函数=-1时读取结束跳出循环
      while (fis.read(b)!=-1){
          fos.write(b);
      }
      //关闭资源
      fis.close();
      fos.close();
  • 以此类推
//复制文件11种方法  
public class Test01 {  
    public static void main(String[] args) throws IOException {  
        // 字节流  
        FileInputStream fis = new FileInputStream("a.txt");  
        FileOutputStream fos = new FileOutputStream("f.txt");  
        // 字节缓冲区流  
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("a.txt"));  
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("f.txt"));  
  
        // 字符流  
        InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"));  
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("f.txt"));  
  
        FileReader fr = new FileReader("a.txt");  
        FileWriter fw = new FileWriter("f.txt");  
        // 字符缓冲区流  
        BufferedReader br = new BufferedReader(new FileReader("a.txt"));  
        BufferedWriter bw = new BufferedWriter(new FileWriter("f.txt"));  
  
        // 字节流方法  
        copyFiles1(fis, fos);  
        copyFiles2(fis, fos);  
  
        copyFiles3(bis, bos);  
        copyFiles4(bis, bos);  
  
        // 字符流读取方法  
        copyFiles5(isr, osw);  
        copyFiles6(isr, osw);  
  
        copyFiles7(fr, fw);  
        copyFiles8(fr, fw);  
  
        // 高效方法  
        copyFiles9(br, bw);  
        copyFiles10(br, bw);  
  
        // 特效方法  
        copyFiles11(br, bw);  
    }  
  
    // 字节读取方法  
    private static void copyFiles1(FileInputStream fis, FileOutputStream fos) throws IOException {  
        // 一次读取一个字节  
        int bys = 0;  
        while ((bys = fis.read()) != -1) {  
            fos.write(bys);  
        }  
        // 关闭流  
        fos.close();  
        fis.close();  
  
    }  
  
    private static void copyFiles2(FileInputStream fis, FileOutputStream fos) throws IOException {  
        // 一次读取一个字节数组  
        byte[] bys = new byte[1024];  
        int len = 0;  
        // 读一个字节数组  
        while ((len = fis.read(bys)) != -1) {  
            fos.write(bys, 0, len);  
        }  
        // 关闭流  
        fos.close();  
        fis.close();  
  
    }  
  
    private static void copyFiles3(BufferedInputStream bis, BufferedOutputStream bos) throws IOException {  
        // 一次读取一个字节  
        int bys = 0;  
        while ((bys = bis.read()) != -1) {  
            bos.write(bys);  
        }  
    }  
  
    private static void copyFiles4(BufferedInputStream bis, BufferedOutputStream bos) throws IOException {  
        // 一次读取一个字节数组  
        byte[] bys = new byte[1024];  
        int len = 0;  
        while ((len = bis.read(bys)) != -1) {  
            bos.write(bys, 0, len);  
            bos.flush();  
        }  
        // 关闭流  
        bos.close();  
        bis.close();  
  
    }  
  
    // 字符读取方法  
    // 普通方法  
    // 方式1  
    public static void copyFiles5(InputStreamReader isr, OutputStreamWriter osw) throws IOException {  
        // 一次读取一个字符  
        // InputStreamReader是FileReader的父类  
        int ch = 0;  
        while ((ch = isr.read()) != -1) {  
            osw.write(ch);  
            osw.flush();  
        }  
  
        isr.close();  
        osw.close();  
    }  
  
    // 方式2  
    public static void copyFiles6(InputStreamReader isr, OutputStreamWriter osw) throws IOException {  
        // 一次读取一个字符数组  
        char[] ch = new char[1024];  
        int len = 0;  
        while ((len = isr.read(ch)) != -1) {  
            osw.write(ch, 0, len);  
            osw.flush();  
        }  
  
        isr.close();  
        osw.close();  
    }  
  
    // 方法3  
    public static void copyFiles7(FileReader fr, FileWriter fw) throws IOException {  
        // 普通方法一次读写一个字符  
        int ch = 0;  
        while ((ch = fr.read()) != -1) {  
            fw.write(ch);  
            fw.flush();  
        }  
  
        fw.close();  
        fr.close();  
    }  
  
    // 方法4  
    public static void copyFiles8(FileReader fr, FileWriter fw) throws IOException {  
  
        // 普通方法一次读取一个字符数组  
        char[] chs = new char[1024];  
        int len = 0;  
        while ((len = fr.read(chs)) != -1) {  
            fw.write(chs, 0, len);  
            fw.flush();  
        }  
  
        fw.close();  
        fr.close();  
    }  
  
    // 高效方法  
    // 方法5  
    public static void copyFiles9(BufferedReader br, BufferedWriter bw) throws IOException {  
        // 高效一次读取一个字符  
        int ch = 0;  
        while ((ch = br.read()) != -1) {  
            bw.write(ch);  
            bw.flush();  
        }  
  
        br.close();  
        bw.close();  
    }  
  
    // 方法6  
    public static void copyFiles10(BufferedReader br, BufferedWriter bw) throws IOException {  
        // 高效一次读取一个字符数组  
        char[] chs = new char[1024];  
        int len = 0;  
        while ((len = br.read(chs)) != -1) {  
            bw.write(chs, 0, len);  
            bw.flush();  
        }  
  
        br.close();  
        bw.close();  
    }  
  
    // 特效方法  
    // 方法7  
    public static void copyFiles11(BufferedReader br, BufferedWriter bw) throws IOException {  
        // 特效方式  
        String string = null;  
        // 一次读写一行  
        while ((string = br.readLine()) != null) {  
            bw.write(string);  
            bw.newLine();  
            bw.flush();  
        }  
        // 关闭输入输出流  
        br.close();  
        bw.close();  
    }  
  
}  

借鉴出处

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java IO流 实现文件复制 的相关文章

  • 求最大公约数之辗转相除法

    文章目录 一 前言二 辗转相除法原理三 用C语言求最大公约数 一 前言 最大公约数为两个及其以上的整数中约数最大的一个 也称为最大公因子 xff0c 最大公因数 a xff0c b的最大公约数记为 xff08 a xff0c b xff09
  • 使用FileZilla配置FTP服务器

    在拷贝大文件的时候 xff0c 由于Windows系统限制有时会拷贝失败 xff0c FTP Server可以解决文件的传输问题 FileZilla是一个很好的免费工具 xff0c 且版本没有强制要求 FileZilla支持F TP FTP
  • VMware 安装 银河麒麟高级服务器操作系统 V10 版本教程

    VMware 安装 银河麒麟高级服务器操作系统 V10 版本教程 目录 VMware 安装 银河麒麟高级服务器操作系统 V10 版本教程 银河麒麟的前世今生 安装过程 银河麒麟的前世今生 银河麒麟 xff08 KylinOS xff09 原
  • 配置python环境变量

    首先 xff0c 我们找到python安装目录 再找到pip exe的目录 然后我们快捷键Win 43 i进入Windows设置 xff0c 在查找设置里输入编辑系统环境变量 xff0c 进入到系统属性界面 点击环境变量 xff0c 找到P
  • 百钱百鸡问题

    中国古代数学家张丘建在在他的 算经 中提出这样一个 百钱百鸡问题 xff0c 鸡翁一 xff0c 值钱五 鸡母一 xff0c 值钱三 xff0c 鸡雏三 xff0c 值钱一 xff0c 百钱买百鸡 xff0c 问有翁 xff0c 母 xff
  • ajax前台传递数组到后台

    前台发送 ajax 请求到后台 xff0c 发现直接传递数组 xff0c 后台是接收不到的 xff0c 需要 ajax 加上一个 traditional 属性
  • SQL必知必会 - 插入/更新/删除数据

    目录 一 插入数据 INSERT 1 插入行 INSERT INTO 2 从表取数 插入他表 SELECT INTO 3 插入检索出的数据 二 复制数据CREATE 三 更新数据 update 拓展 replace函数 四 删除数据 DEL
  • 动态规划矩阵连乘求最优值和最优解

    问题描述 矩阵相乘最重要的方法是一般矩阵乘积 它只有在第一个矩阵的列数和第二个矩阵的行数相同时才有意义 给定n个矩阵 xff1a A1 A2 An xff0c 其中Ai与Ai 43 1是可乘的 xff0c i 61 1 xff0c 2 xf
  • epoll源码解析翻译------说使用了mmap的都是骗子

    本文地址 https www cnblogs com l2017 p 10830391 html https blog csdn net li haoren select poll epoll这三个都是对poll机制的封装 只是select
  • 修改django中的querydict

    方法一 xff1a Django 中的QueryDict is immutable QueryDict copy 代码如下 xff1a param form 61 Rule ParamEditModelForm data 61 reques
  • kafka 单机配置外网无法访问

    修改配置文件 root 64 localhost config root 64 localhost config pwd root kafka 2 12 1 0 1 config root 64 localhost config root
  • Linux 网卡配置

    1 复制网卡配置文件 xff0c 更名为指定文件 root 64 bogon network scripts cd etc sysconfig network scripts root 64 bogon network scripts ro
  • 结束进程 --inux命令

    简介 本文介绍Linux根据进程名结束 xff08 杀死 xff09 进程的命令 主要有三种方法 xff1a ps 43 grepkillallpkill kill 9 96 lsof t i lt port gt 96 1 xff1a p
  • Linux command

    1 根据端口port查进程 1 根据端口port查进程 netstat nap grep port root 64 localhost Init auto netstat nap grep 7777 tcp 0 0 192 168 2 24
  • Linux pip install python 包,异常分析

    pip install python 包异常如下 xff1a WARNING Running pip as the 39 root 39 user can result in broken permissions and conflicti
  • kafka 简介

    简单介绍kafka 安装以及简单的单节点使用说明 xff0c 仅供了解 安装配置 启动验证 1 安装 下载kafka 安装包 xff0c 并解压 再次个人安装kafak 2 12 1 0 1 2 配置 配置 kafka 2 12 1 0 1
  • scp 远程复制命令介绍

    scp r 复制文件 scp P xff1a 复制指定端口号 目标 主机A 文件复制到主机B某指定目录下 实例 xff1a 将服务器 192 168 2 101 中文件夹 home bd 复制到 192 168 2 77 的目录 home
  • Django 项目迁移

    Django 项目APP Initapp 更新数据库 PS D Work Git Init Web Risk Init Init Sys gt PS D Work Git Init Web Risk Init Init Sys gt pyt
  • Xmind 转 Excel or CSV 格式的TestCase

    Xmind 脑图转 TestCase 随笔记录 1 新建Python 项目 Open Pycharm gt File gt New Project 2 下载安装包 xmind2testcase 和xmind2testlink File gt
  • 服务器蓝屏怎么回事,怎么解决?

    最近有小伙伴和我表示 xff0c 打开服务器是遇到蓝屏了 xff0c 有点慌 xff0c 咨询我有没有什么解决办法 xff0c 今天我在这边总结一下 一 服务器蓝屏原因 xff1a 1 版本冲突 2 软硬件不兼容 3 应用程序存在着BUG

随机推荐

  • zookeeper 集群搭建

    准备环境修改hostname 永久修改hostname root 64 bogon java hostnamectl set hostname server 247 root 64 bogon java root 64 bogon java
  • 为什么更多APP开发者选择穿山甲作为游戏变现平台?

    当前手游行业发展迅速 xff0c 游戏APP用户存量稳定 xff0c 变现价值大 而在选择游戏变现平台时 xff0c 更多开发者青睐于穿山甲平台 穿山甲平台有何优势 为什么会受到这么多APP开发者的信赖呢 穿山甲是国内领先的第三方变现平台
  • 穿山甲平台助力开发者降本增效,技术进阶

    在存量市场 xff0c 变现是开发者的头等大事 xff0c 开发者想要冲破重围 xff0c 必须要探索自我商业化道路与模式 广告变现是当下众多开发者的选择 xff0c 广告变现的路径有两条 xff1a 一 xff0c 保证广告位的填充率 二
  • Debian安装JDK-17.0.5教程

    第一步 xff1a 创建一个java文件夹 mkdir java 第二步 xff1a 打开java文件夹 cd java 第三步 xff1a 下载Linux版本的JDK xff08 jdk 17 linux x64 bin tar gz必须
  • STM32 控制LED灯 亮灭

    lcd c include 34 led h 34 void Delay uint32 t count unsigned int i for count 61 0 count i 61 500 while i void LED GPIO C
  • 树莓派import cv2 失败解决方法

    设备 树莓派4b 问题简述 xff1a 原装系统自带python3 9 2 xff0c 参考了大佬流 浪 猫的教程 超简单教你在树莓派上安装opencv xff08 二 xff09 时 xff0c 遇到了一个依赖源的安装错误 xff0c 直
  • Ansible学习笔记

    目录 1 Ansible搭建 xff08 基于CentOS 7 9 xff09 1 1 在控制节点和被控节点获取epel源 1 2 安装Ansible 2 理论 3 基础配置 3 1 Ansible发送指令的原理 3 2 Ansible配置
  • 半字符入栈的回文判定

    回文是指正读反读均相同的字符序列 xff1b 如 abba 和 abdba 均是回文 xff0c 但 good 不是回文 试写一个算法判定给定的字符序列是否是回文 xff08 提示 xff1a 将一半字符入栈 xff09 算法分析 xff1
  • vue中封装axios 以及api 统一管理

    目录 一 安装axios二 创建文件夹三 封装axios1 引入axios2 引入vuex3 引入vant4 引入我们的环境变量5 创建axios实例6 添加请求拦截7 响应拦截8 导出封装的axios函数 四 api统一管理1 引入我们封
  • 提示虚拟内存不足可能的原因以及该怎么处理

    一 什么是虚拟内存 虚拟内存的概念是相对于物理内存而言的 在硬盘上开辟一块磁盘空间当做内存使用 xff0c 这部分硬盘空间就叫虚拟内存 xff0c 是Windows系统将部分硬盘空间作为内存来使用 xff0c 解决物理内存被占用过多 xff
  • vue常用指令

    常用指令 xff1a vue常用指令有 xff1a v html指令 v show指令 v if指令 v else指令 v else if指令 v for指令 v text指令 v bind指令 v on指令 v model指令等等 1 v
  • wsl的安装及迁移至其他盘

    安装 xff1a wsl是什么 xff1a 适用于Linux的Windows子系统 编辑 维基百科 xff0c 自由的百科全书 xff08 重定向自Windows Subsystem for Linux xff09 跳到导航跳到搜索 适用于
  • ubuntu 不能检测到显卡信息

    开始时 xff1a lspci grep 39 VGA 39 lspci grep 39 VGA 39 01 00 0 VGA compatible controller NVIDIA Corporation Device 2560 rev
  • 记录Vue项目中使用的各插件

    记录项目 package json 文件中各插件的使用 xff1a 目录 1 axios 2 babel polyfill 3 core js 4 echarts 5 element ui 6 es6 promise 7 js beauti
  • 看懂机器视觉(CV)\听懂语音识别(ASR)\理解自然语言处理(NLP)

    缩略语 机器视觉 xff08 CV xff09 Computer vision 语音识别 xff08 ASR xff09 Automatic Speech Recognition 自然语言处理 xff08 NLP xff09 Natural
  • zeal 文档下载及其离线文档下载

    下载地址 百度网盘 链接 xff1a https pan baidu com s 1r4d1OfrUTrbaZ9k9YfdWLA pwd 61 o7au 提取码 xff1a o7au 下载讲解 xff1a 1 下载安装 2 Tools gt
  • Linux系统部署JAVA项目

    Linux系统部署项目 一 准备工作 1 WinSCP 远程服务器可视化工具 2 Xshell5 linux服务器打命令用的 3 准备一台阿里云 华为云 腾讯云服务器 要求 xff1a 系统镜像centeOS7 0以上 二 开始搭建环境 1
  • Spring Boot 之---什么是热部署?---怎么使用?

    Spring Boot 之 什么是热部署 xff1f 怎么使用 xff1f 1 什么是热部署2 怎么启用热部署 xff08 1 xff09 手动配置 xff08 2 xff09 自动配置 总结 1 什么是热部署 所谓热部署 xff0c 就是
  • 什么是反向代理?

    正向代理 当客户端访问一台服务器有障碍 xff0c 访问不到的时候 xff0c 这时候就可以找一台可以访问到该服务器的另外一台服务器去代替他去访问 xff0c 这台代替他去访问的服务器称之为代理服务器 然后客户端就可以把请求发送给代理服务器
  • Java IO流 实现文件复制

    Java IO流 实现文件复制 思路 1 将指定文件转换成输入流 2 创建数组接收输入字节 3 将文件复制想要存放的轮径创建输出流 4 将输入流的字节输出出去 实现 span class token comment 创建输入和输出流 spa