java 流操作对文件的分割和合并的实例详解_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习
java 流操作对文件的分割和合并的实例详解
学习文件的输入输出流,自己做一个小的示例,对文件进行分割和合并。
下面是代码:
- package com.dufy.file;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.SequenceInputStream;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Enumeration;
- import java.util.List;
- /**
- * 文件的切割和合并
- * 1.要切割和合并文件:主要考虑的就是文件的源地址,目标地址,暂存文件地址和文件名称
- * 2.切割文件:判断给的暂存地址是否存在,不存在,则创建;从源地址中读出文件,按照给定的大小进行文件的切割操作放入暂存地址中
- * 3.合并文件:判断给定的目标地址是否存在,不存在,则创建;定义List集合将暂存地址中的文件全部读取出来,放到list集合中
- * 然后使用Enumeration列举出所有文件,合并流合并文件
- * 最后写入到目标的地址中
- * 注:本例子中所有的异常都采用抛出的方式处理
- * @author aflyun
- *
- */
- public class TestFileCutUnion {
- public static void main(String[] args) throws IOException {
- String fSrc = "D:/1.jpg";//源文件的目录
- String fDir = "D:/1";//目标文件的目录
- String fTemp = "D:/2";//暂存文件的目录
- File srcFile = new File(fSrc);
- File dirFile = new File(fDir);
- File tempFile = new File(fTemp);
- String fileName = srcFile.getName();//获取文件的名称
- cutFile(srcFile,tempFile);//调用分割方法
- unionFile(dirFile,tempFile,fileName);//调用合并方法
- }
- /**
- * 切割文件
- * @param srcFile
- * @param tempFile
- * @throws IOException
- */
- public static void cutFile(File srcFile, File tempFile) throws IOException {
- //读取源地址文件
- FileInputStream fis = new FileInputStream(srcFile);
- FileOutputStream fos = null;
- //是否为文件,不是就创建
- if(!tempFile.isFile()){
- tempFile.mkdirs();
- }
- byte[] b = new byte[100];
- int len =0;
- int count = 0;
- while((len=fis.read(b)) != -1){
- int num = count++;
- //写入暂存地址目录中
- fos = new FileOutputStream(new File(tempFile, num+".part"));
- fos.write(b, 0, len);
- }
- fos.flush();
- fos.close();
- fis.close();
- System.out.println("分割完成!");
- }
- /**
- * 合并文件
- * @param dirFile
- * @param tempFile
- * @param fileName
- * @throws IOException
- */
- public static void unionFile(File dirFile, File tempFile, String fileName) throws IOException {
- //判断目标地址是否存在,不存在则创建
- if(!dirFile.isFile()){
- dirFile.mkdirs();
- }
- List<FileInputStream> list = new ArrayList<FileInputStream>();
- //获取暂存地址中的文件
- File[] files = tempFile.listFiles();
- for (int i = 0; i < files.length; i++) {
- //用FileInputStream读取放入list集合
- list.add(new FileInputStream(new File(tempFile, i+".part")));
- }
- //使用 Enumeration(列举) 将文件全部列举出来
- Enumeration<FileInputStream> eum = Collections.enumeration(list);
- //SequenceInputStream合并流 合并文件
- SequenceInputStream sis = new SequenceInputStream(eum);
- FileOutputStream fos = new FileOutputStream(new File(dirFile, fileName));
- byte[] by = new byte[100];
- int len;
- while((len=sis.read(by)) != -1){
- fos.write(by, 0, len);
- }
- fos.flush();
- fos.close();
- sis.close();
- System.out.println("合并完成!");
- }
- }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文地址是:http://www.piaodoo.com/thread-13236-1-2.html 丝袜控www.txdah.com 131www.buzc.org学习之外可赏心悦目有助更好地学习!
java 流操作对文件的分割和合并的实例详解_java - JAVA的更多相关文章
- 事件驱动模型实例详解(Java篇)
或许每个软件从业者都有从学习控制台应用程序到学习可视化编程的转变过程,控制台应用程序的优点在于可以方便的练习某个语言的语法和开发习惯(如.net和java),而可视化编程的学习又可以非常方便开发出各类 ...
- Java使用wait() notify()方法操作共享资源详解_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 Java多个线程共享资源: 1)wait().notify()和notifyAll()方法是本地方法,并且为final方 ...
- Java AtomicInteger类的使用方法详解_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 首先看两段代码,一段是Integer的,一段是AtomicInteger的,为以下: public class Samp ...
- springboot扫描自定义的servlet和filter代码详解_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 这几天使用spring boot编写公司一个应用,在编写了一个filter,用于指定编码的filter,如下: /** ...
- Struts 2 配置Action详解_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 实现了Action处理类之后,就可以在struts.xml中配置该Action,从而让Struts 2框架知道哪个Act ...
- Jdbc连接数据库基本步骤详解_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 Jdbc连接数据库的基本步骤,供大家参考,具体内容如下 package demo.jdbc; import java.s ...
- Java笔记:Java 流(Stream)、文件(File)和IO
更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的 ...
- Java总结:Java 流(Stream)、文件(File)和IO
更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的 ...
- Java-使用IO流对大文件进行分割和分割后的合并
有的时候我们想要操作的文件很大,比如:我们想要上传一个大文件,但是收到上传文件大小的限制,无法上传,这是我们可以将一个大的文件分割成若干个小文件进行操作,然后再把小文件还原成源文件.分割后的每个小文件 ...
随机推荐
- Go(05)map介绍
原文地址: http://www.limerence2017.com/2019/06/11/golang06/ 基本用法 map同样也是引用类型,map在使用前需要通过make进行初始化,否则会报pa ...
- 缓存融合(Cache Fusion)介绍
概念 简单地说,缓存融合就是把Oracle RAC数据库中所有数据库缓存作为一个共享的数据库缓存,并被RAC中的所有节点共享.它是实现RAC的基本技术. 缓存融合主要有如下四个功能: (1) 提供扩展 ...
- MariaDB 连接查询,视图,事物,索引,外键
1.连接查询 --创建学生表 create table students ( id int unsigned not null auto_increment primary key, name var ...
- Hibernate初了解
Hibernate是一个开放源代码的对象关系映射框架, 它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JD ...
- Kafka集群搭建和配置
Kafka配置优化 https://www.jianshu.com/p/f62099d174d9 1.安装&配置 下载tar包 解压后即可使用 修改配置文件 将server.propertie ...
- jmeter监控服务器性能(windows系统)
一.jmeter安装插件 前两个是jmeter插件,安装到本地的jmeter文件夹下第三个是放到服务器里的 jmeter插件官网地址:https://jmeter-plugins.org/ [我分享的 ...
- cocos2dx基础篇(4) 标签CCLabel
[本节内容] cocos2dx三种文字字体的显示:CCLabelTTF(一般字体).CCLabelAtlas(自定义字体).CCLabelBMFont(自定义字体) CCLabelTTF CCLabe ...
- jmeter对websocket进行压测
参考文档:https://blog.csdn.net/weixin_39430584/article/details/81508451 ①脚本调通 ②添加并发量和持续时间 ③看服务器指标
- C# 字符串、字节数组互相转换
/// <summary> /// MD5加密 /// </summary> /// <param name="sender"></par ...
- hbase部署
Hbase: 更细的操作和原理研究笔记和视频 cloudera Hbase:https://sysit.cn/blog/post/sysit/cloudera%E5%AE%89%E8%A3%85HBA ...