目标:将多个非空的文件合并至一个文件中,并删除原来的文件。

使用类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

多个非空文件整合至一个文件相关推荐

  1. Python 技术篇-用os库实现删除本地文件、非空文件夹方法,python判断本地文件、文件夹是否存在方法

    os.remove() 就是删除文件的 os.removedirs() 就是删除文件夹的 os.path.exists() 用来判断文件或文件夹是否存在 import ospath = "D ...

  2. php递归删除空数组,php 递归删除非空文件夹示例

    这篇文章主要为大家详细介绍了php 递归删除非空文件夹示例,具有一定的参考价值,可以用来参考一下. 对php递归删除非空的文件夹感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! /** * ...

  3. C++ 如何将一个文件夹中的所有文件(.txt或者.log)内容整合到一个文件(.txt或者.log)当中

    有时候我们希望读取一个文件夹中的所有文件,对各个文件中的数据按某种规则进行筛选,然后将筛选后的数据整合到一个文件中.这段时间正好替同事写了这一部分,在此记录下来自己的处理过程,如果有需要的朋友也可以参 ...

  4. java 将一个非空文件夹拷贝到另一个地方

    没有处理异常,只是简单的抛出了.需要捕获的需修改一下. public class Test001 { //把一个文件夹或文件移到另一个地方去. public static void main(Stri ...

  5. CMD目录操作——del【删除普通文件】和rd命令【删除非空文件夹】

    删除许多文件: 1,通过cd切换到想要到的文件夹地址 2,执行下面的命令: del *.* 删除空文件夹以及非空文件夹: 参数: rd /s/q 文件夹的名字 /s 删除指定目录和所有子目录及其包含的 ...

  6. 空文件夹、重复文件夹清理,电脑优化、异常修复

    哈喽~这里是小宝库. 今天原本想发一个清理空文件夹的小工具来着,然后使用效果不太理想.然后小编找啊找,找到一个好朋友...不是,找到一个非常全面的Windows电脑优化工具. 除了可以快速智能的对电脑 ...

  7. python os.removedirs() 和shutil.rmtree()(os.removedirs用于删除非空文件夹和子文件夹、shutil.rmtree用于删除文件夹下所有文件夹和文件)

    文章目录 shutil.rmtree() os.removedirs() shutil.rmtree() shutil.rmtree() 表示递归删除文件夹下的所有子文件夹和子文件. def rmtr ...

  8. Ubuntu删除非空文件夹和空文件夹命令

    非空 :rm -rf Foldername 空 : rmdir Foldername

  9. ssh提交服务器不能删除文件夹,ssh下命令不能删除非空文件夹的解决方法

    ssh下面删除命令 rm 开始找到网上解释 rm [path] 可以删除文件/文件夹 但是我用来删除的时候却提示: rm admin1 rm: cannot remove `admin1`: Is a ...

最新文章

  1. rpm 安装 忽略依赖_CentOS 7 安装 MySQL 5.7 详细教程及常见问题
  2. opencv机器学习线性回归_机器学习入门1---简单线性回归
  3. CTFshow 命令执行 web73
  4. ajax不能设置哪些header
  5. arcgis9.2的安装方法
  6. 前端学习(2546):debugger
  7. WinForm中使用WPF的控件
  8. Java final 关键字简述
  9. 《设计模式之禅》学习笔记(五)
  10. java数组查找算法_JAVA数组中查找算法中equals和==的问题
  11. HIVE SQL 时间函数
  12. 小米蓝牙耳机持续白灯_小米蓝牙耳机不能自动串联问题
  13. vue2 动态添加响应式数据
  14. qq传输文件腾讯服务器保存在哪里,电脑接收的QQ文件在哪里?在哪个文件夹可以找到QQ接收的文件...
  15. USACO 1.1.3 - Friday the Thirteenth(模拟)
  16. mysql之my.cnf
  17. 6.1儿童节,致我们回不去的童年
  18. 优雅简洁的通用排版利器:MarkDown(支持公众号、知乎等场景渲染)
  19. python画哆啦a梦图片_80行代码!用Python做一个哆来A梦分身
  20. Kubernetes 核心概念介绍

热门文章

  1. 【Hive】命令行提示符中显示当前所在数据库
  2. 升级node,老的项目启动不了的解决方法(亲测有效)
  3. Kali linux 2016.2(Rolling)之 Nessus安装及Plugins Download Fail 解决方法
  4. Undefined symbols for architecture armv7错误解决方法
  5. IDEA中解决Edit Configurations中没有tomcat Server选项的问题(附配置Tomcat)
  6. SuperBrowser简单游览器Android
  7. redis的安装和命令的使用(史上最全命令集合)
  8. java windows wrapper_Java Service Wrapper 发布Java程序为Windows服务
  9. vscode 离线安装python插件_vscode for Python插件下载-Visual Studio Code Python插件下载0.9.1 官方版-西西软件下载...
  10. 全向轮机器人直线运动分析