多个非空文件整合至一个文件
目标:将多个非空的文件合并至一个文件中,并删除原来的文件。
使用类FileChannel,FileChannel是Java NIO中的一个连接到文件的通道。
那么,什么是NIO呢?
Java 的NIO是针对原java io所开发出来的一套新的io api接口,Java NIO就是Java NEW IO ,它是从Java 1.4版本开引入的一个新的IO API,替代标准的Java IO API.
NIO与IO有什么区别呢?
区别1:IO是面向流的,每次从流中读一个或者多个字节,直至读完所有的直接,没有缓存;而NIO是面向缓冲区的,数据读到缓冲区后可在缓冲区前后移动,增加了处理过程中的灵活性。
区别2:IO的各种流是阻塞的,即当一个线程调用read()或者write()时,直到读取得一些数据或者数据完全写入,否则该线程一直被阻塞,此期间不能有其他任何动作;而NIO是非阻塞模式,一个线程发送请求时,只是取得当前可用的数据,若当前没有数据可用,不会获取,且在此期间,这个线程可以同时去做别的事情,所以一个单独的线程可以管理多个输入与输出通道。
主要的理解就是这样的,以下是代码示例:
public final int BUFSIZE = 1024 * 32;public void mergeFiles(String outFile, String[] files) {FileChannel outChannel = null;System.out.println("Merge " + Arrays.toString(files) + " into " + outFile);try {outChannel = new FileOutputStream(outFile).getChannel();for(String f : files){FileChannel fc = new FileInputStream(f).getChannel(); ByteBuffer bb = ByteBuffer.allocate(BUFSIZE);//创建一个容量为BUFSIZE的缓冲区while(fc.read(bb) != -1){bb.flip();//将一个处于存数据状态的缓冲区变成一个处于取数据的状态outChannel.write(bb);bb.clear();//重置缓冲区的主要索引,而非清空缓冲区}fc.close();}System.out.println("Merged!! ");} catch (IOException ioe) {ioe.printStackTrace();} finally {try {if (outChannel != null) {outChannel.close();}} catch (IOException ignore) {}}}
删除文件使用file.delete()方法即可。
转载于:https://www.cnblogs.com/wenf/p/5805481.html
多个非空文件整合至一个文件相关推荐
- Python 技术篇-用os库实现删除本地文件、非空文件夹方法,python判断本地文件、文件夹是否存在方法
os.remove() 就是删除文件的 os.removedirs() 就是删除文件夹的 os.path.exists() 用来判断文件或文件夹是否存在 import ospath = "D ...
- php递归删除空数组,php 递归删除非空文件夹示例
这篇文章主要为大家详细介绍了php 递归删除非空文件夹示例,具有一定的参考价值,可以用来参考一下. 对php递归删除非空的文件夹感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! /** * ...
- C++ 如何将一个文件夹中的所有文件(.txt或者.log)内容整合到一个文件(.txt或者.log)当中
有时候我们希望读取一个文件夹中的所有文件,对各个文件中的数据按某种规则进行筛选,然后将筛选后的数据整合到一个文件中.这段时间正好替同事写了这一部分,在此记录下来自己的处理过程,如果有需要的朋友也可以参 ...
- java 将一个非空文件夹拷贝到另一个地方
没有处理异常,只是简单的抛出了.需要捕获的需修改一下. public class Test001 { //把一个文件夹或文件移到另一个地方去. public static void main(Stri ...
- CMD目录操作——del【删除普通文件】和rd命令【删除非空文件夹】
删除许多文件: 1,通过cd切换到想要到的文件夹地址 2,执行下面的命令: del *.* 删除空文件夹以及非空文件夹: 参数: rd /s/q 文件夹的名字 /s 删除指定目录和所有子目录及其包含的 ...
- 空文件夹、重复文件夹清理,电脑优化、异常修复
哈喽~这里是小宝库. 今天原本想发一个清理空文件夹的小工具来着,然后使用效果不太理想.然后小编找啊找,找到一个好朋友...不是,找到一个非常全面的Windows电脑优化工具. 除了可以快速智能的对电脑 ...
- python os.removedirs() 和shutil.rmtree()(os.removedirs用于删除非空文件夹和子文件夹、shutil.rmtree用于删除文件夹下所有文件夹和文件)
文章目录 shutil.rmtree() os.removedirs() shutil.rmtree() shutil.rmtree() 表示递归删除文件夹下的所有子文件夹和子文件. def rmtr ...
- Ubuntu删除非空文件夹和空文件夹命令
非空 :rm -rf Foldername 空 : rmdir Foldername
- ssh提交服务器不能删除文件夹,ssh下命令不能删除非空文件夹的解决方法
ssh下面删除命令 rm 开始找到网上解释 rm [path] 可以删除文件/文件夹 但是我用来删除的时候却提示: rm admin1 rm: cannot remove `admin1`: Is a ...
最新文章
- rpm 安装 忽略依赖_CentOS 7 安装 MySQL 5.7 详细教程及常见问题
- opencv机器学习线性回归_机器学习入门1---简单线性回归
- CTFshow 命令执行 web73
- ajax不能设置哪些header
- arcgis9.2的安装方法
- 前端学习(2546):debugger
- WinForm中使用WPF的控件
- Java final 关键字简述
- 《设计模式之禅》学习笔记(五)
- java数组查找算法_JAVA数组中查找算法中equals和==的问题
- HIVE SQL 时间函数
- 小米蓝牙耳机持续白灯_小米蓝牙耳机不能自动串联问题
- vue2 动态添加响应式数据
- qq传输文件腾讯服务器保存在哪里,电脑接收的QQ文件在哪里?在哪个文件夹可以找到QQ接收的文件...
- USACO 1.1.3 - Friday the Thirteenth(模拟)
- mysql之my.cnf
- 6.1儿童节,致我们回不去的童年
- 优雅简洁的通用排版利器:MarkDown(支持公众号、知乎等场景渲染)
- python画哆啦a梦图片_80行代码!用Python做一个哆来A梦分身
- Kubernetes 核心概念介绍
热门文章
- 【Hive】命令行提示符中显示当前所在数据库
- 升级node,老的项目启动不了的解决方法(亲测有效)
- Kali linux 2016.2(Rolling)之 Nessus安装及Plugins Download Fail 解决方法
- Undefined symbols for architecture armv7错误解决方法
- IDEA中解决Edit Configurations中没有tomcat Server选项的问题(附配置Tomcat)
- SuperBrowser简单游览器Android
- redis的安装和命令的使用(史上最全命令集合)
- java windows wrapper_Java Service Wrapper 发布Java程序为Windows服务
- vscode 离线安装python插件_vscode for Python插件下载-Visual Studio Code Python插件下载0.9.1 官方版-西西软件下载...
- 全向轮机器人直线运动分析