hash rinetd Java Out Of Memory Nginx环境搭建 caching boost sed syntax variant menu Semantic UI angularjs教程 直销系统源码 axure组件库下载 java清空数组 docker启动容器 python加注释 python中的zip filejava java编程学习入门 java接口文档 java匿名函数 html5网页制作 卡巴斯基离线升级包 编程语言实现模式 js刷新页面 gunzip 深渊碎片 mysql时间比较 php小数点保留2位 php随机数函数 kmplayer绿色版 骰子牛牛 x怎么截图 掌门一对一官网下载 惠普打印机怎么加粉 熊猫关键词 fla文件用什么打开 音乐迷 超级好友
当前位置: 首页 > 学习教程  > java

史上最简单详细的——字节流文件拷贝

2021/2/23 10:33:06 文章标签:

文章目录前言一、文件流的简绍二、使用步骤1.问题分析2.代码实现过程分析三、代码实现1.文件复制代码展示2.文件复制成果展示总结前言 由于过年了,就想着玩一下,不过学习得自律啊,今天就开始新年的第一篇文章了——关于字节流与文件的拷贝 …

文章目录

  • 前言
  • 一、文件流的简绍
  • 二、使用步骤
    • 1.问题分析
    • 2.代码实现过程分析
  • 三、代码实现
    • 1.文件复制代码展示
    • 2.文件复制成果展示
  • 总结


前言

由于过年了,就想着玩一下,不过学习得自律啊,今天就开始新年的第一篇文章了——关于字节流文件拷贝

一、文件流的简绍

文件流包括FileInputStream和FileOutputStream,其中它们分别是inputStream和OutputStream的子类,而FileInputStream和FileOutputStream的构造方法可以接受文件路径,也可以接受File对象作为参数。

二、使用步骤

1.问题分析

先打开一个文件输入流,再打开一个输出流,将输入流中读取的内容写入到输出流中,就可以实现文件的拷贝了。

2.代码实现过程分析

1、比如字节数组总长度为10,文件流中内容总长是26.那么第一次读取10个字节,写入10个字节。
2、字节数组总长是10,文件流中内容总长是16。那么第二次也读取10个字节,写入10个字节
3、字节数组总长是10,目前文件流中内容长度是6.那么第三次读取6个字节,写入6个字节。
4、字节数组总长是10,目前文件流中内容长度是0.那么第四次读取时到达文件末尾,返回-1,退出文件拷贝循环。

三、代码实现

1.文件复制代码展示

代码如下(示例):

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

public class Test4 {
	public static void main(String[] args) {
		FileInputStream fileInputStream = null; // 创建fileInputStream对象
		FileOutputStream fileOutputStream = null;// 创建fileOutputStream对象
		try {
			fileInputStream = new FileInputStream("D:"+File.separator+"test.txt"); // 初始化对象且赋予被复制文件的路径
			fileOutputStream = new FileOutputStream("D:"+File.separator+"copy.txt"); // 初始化对象且给复制好的文件赋予存放路径
			byte[] array = new byte[1024*1]; // 创建一个字节数组,当复制文件的时候其大小一般是1024的倍数
			int len = 0; // 设置一个变量,方便后续的做判断
			while((len = fileInputStream.read(array))!=-1) {// 用上面的len变量存储fileInputStream这个类自带的read()方法返回的结果与-1做判断,当len为-1的时候该文件读取完了,结束循环
				String string = new String(array,0,len);// 储存读取的数据,其中的第二参数0是偏移变量,len是真实读取到的长度
				byte[] strArray = string.getBytes();// 转换成字节,储存在byte数组中
				fileOutputStream.write(strArray); // 将字节写入
				fileOutputStream.flush(); // 刷新,防止还有残留在管道中的字节(这个刷新的位置不确定因代码需要而异)
			}		
		} catch (Exception e) {
			System.out.println(e.toString());
		}finally {
			if(fileInputStream!=null) {//判断文件输入是否为空,如果不为空则关闭
				try {
					fileInputStream.close();//关闭文件输入
				} catch (IOException e) {
					System.out.println(e.toString());
				}
			}
			if(fileOutputStream!=null) {//判断文件输出是否为空,如果不为空则关闭			
				try {
					fileOutputStream.flush();// 刷新,防止还有残留在管道中的字节(这个刷新的位置不确定因代码需要而异)
					fileOutputStream.close();//刷新之后关闭文件输出
				} catch (Exception e) {
					System.out.println(e.toString());
				}
			}
			System.out.println("数据复制成功");
		}
	}
}

代码如下(输出):

数据复制成功

2.文件复制成果展示

代码运行后去D盘查看的
在这里插入图片描述
test.txt文件的内容
在这里插入图片描述
复制完成后copy.txt的内容
在这里插入图片描述

总结

复制完成后要主要查看原文件和复制好的文件的大小是否一致,如果不一致则就算现实内容也属于失败的,这里文件的复制主要才用子节流的方法,当然还有其他的流方法,比如字符流,基本操作都是一样的这里就留给大家自我探索喽。


本文链接: http://www.dtmao.cc/news_show_2036698.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?