java读取一个大文件写到多个小文件

  • 最近看Java面试中有问到关于利用java io流,读取一个大文件,然后输出到几个小文件的问题,这里自己写了个简单的sample
public static void main(String[] args) throws Exception {String inputFilePath = "D:/**/inputfile.csv";String outputFilePath = "D:/**/outputfile/";File file = new File(inputFilePath);// 1.算出Input文件的length(byte数)long inputFileSize = file.length();// 2.规定每个Output文件的lengthlong outputFileSize = 1024 * 2;// 3.算出有几个Output文件long fileCount = inputFileSize / outputFileSize;if (inputFileSize % outputFileSize != 0) {fileCount += 1;}FileInputStream fis = new FileInputStream(file);BufferedInputStream bis = new BufferedInputStream(fis);// 每次读取字节数byte[] bytes = new byte[1024];int n = -1;// 已经读取的字节数long readedBytes = 0;// 每次读入的字节数long perInputBypes = bytes.length;// 4.根据output文件个数进行输出for (int i=0; i < fileCount; i++) {System.out.println("**file**" + i);File outputFile = new File(outputFilePath + "ouput" + i + ".csv");BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outputFile));while ((n = fis.read(bytes, 0, bytes.length)) != -1) {bos.write(bytes, 0, n);readedBytes += n;// 从input文件中读取的n不到bytes.length的情况System.out.println("##n#" + n);System.out.println("##readedBytes#" + readedBytes);// 查看剩余没读的字节数是否小于每次读取的bytes数// 由于最后一次读取的字节数可能会小于bytes.length// 已读字节数 + 最后一次读取字节数 和outputFile大小做比较// 看是否可以需要再重新写一个文件if ((inputFileSize - readedBytes) < bytes.length) {perInputBypes = inputFileSize - readedBytes;System.out.println("##perInputBypes#" + perInputBypes);}// 下一次读取bytes前先预判是否超出输出文件bytes大小if (readedBytes + perInputBypes > (i + 1) * outputFileSize) {break;}}bos.flush();bos.close();}bis.close();}

java将一个大文件拆分成几个小文件输出相关推荐

  1. python将大文件拆分成多个小文件,同时对各小文件处理以节省时间

    # test.py import json import osroot_path = os.path.dirname(__file__)def f(x):return xtest_datas = [] ...

  2. Java把一个大集合拆分成多个小集合,可以利用多线程提升并发处理效率

    场景: 在开发中,如果一个集合中的数据量特别大,那么对这个集合进行循环处理业务可能就会比较耗时,为了提升效率,可以考虑把大集合拆分成多个小集合,然后用多线程对拆分后的多个小集合进行处理 拆分: 1.拆 ...

  3. Java如何把一个CSV文件拆分成指定个CSV文件【带源码,完美运行带截图】

    文章目录 一.前言 二.实现 1. 首先进行CSV文件读取,并且把文件组成list,把list拆分 2. 拆分的具体代码如下: 3. 导出到新CSV文件代码如下: 4.测试 5. 结果 一.前言 前段 ...

  4. java 文件分隔_java 实现大文件分隔成多个小文件

    public class FileTest { /** * 文件分隔器:给定文件的路径和每一块要拆分的大小,就可以按要求拆分文件 * 如果指定的块给原文件都还要大,为了不动原文件,就生成另一个文件,以 ...

  5. sqlserver将mdf文件拆分成多个ndf文件

    sqlserver版本:2008R2 1.为什么要拆分 数据库在运行一段时间后mdf文件会迅速增大,这会导致查询速度变慢.或者mdf文件的大小达到了操作系统允许的最大大小,这个时间就必须要进行拆分了. ...

  6. 如何将一个文件分割成多个小文件

    你也许会遇到到这样一个问题?当你有一个较大的软件,而无法用一张软盘将其全部拷下时,你也许会想 到该将它分解开,分盘拷回去后,再将它们合并起来.现在的这种分割工具很多,你想自己动手做一个适合自己的分割工 ...

  7. c语言文件分割与合并程序详解,如何实现将一个文件分割成多个小文件

    你也许会遇到到这样一个问题?当你有一个较大的软件,而无法用一张软盘将其全部拷下时,你也许会想到该将它分解开,分盘拷回去后,再将它们合并起来.现在的这种分割工具很多,你想自己动手做一个适合自己的分割工具 ...

  8. 批量将一个 PPT 幻灯片文件按固定页数拆分成多个幻灯片文件

    概要:对于经常写 PPT 的人来说,经常会与 PPT 幻灯片打交道.如果一个 PPT 幻灯片文件有很多页数,那么有没有办法能够将他们拆分成多个 PPT 幻灯片文件呢?这样每一个独立的 PPT 文件的页 ...

  9. 批量将一个或多个 Word 文件按固定页数拆分成多个 Word 文件

    概要:我们经常面对很多 Word 文档,有些 Word 文档有几百页,有时候我们希望将这些 Word 文档都按固定的页数拆分成多个 Word 文档.有没有一种简单的方法能够批量的将这些 Word 文件 ...

最新文章

  1. gradle新建工程,多项目依赖,聚合工程
  2. 第五十三篇、OC利用AFN上传视频到服务器
  3. C语言程序设计答案黄保和编,C语言程序设计答案(黄保和编)第5章.pdf
  4. socket编程简单Demo讲解及源码分享(C# Winform 内网)
  5. 字符大小端aix linux,Go交叉编译的那些事
  6. 微软认知语音服务 语音识别
  7. 顺风车Android性能优化之View布局优化
  8. junit学习笔记(二):hamcrest和TestSuit
  9. 组件Button的简单用法
  10. 酒店客房卫生打扫步骤及重点
  11. 笔记(一)Home Assistant简介
  12. 迪文屏学习系列之数据录入
  13. 地铁线路查询(easyx)
  14. linux 服务器 安装svn
  15. 大数据是什么意思?就业前景如何?
  16. 【PHPWord】如何解决PHPWord的输出checkbox复选框并设置checked已勾选
  17. 使用JS进行版本号比较方法
  18. ONES X 深圳农村商业银行 | 数字化项目管理实践
  19. 为什么静下心来阅读会是一种奢侈?
  20. 2011移动开发者大会亮点之二:七大论坛神秘嘉宾闪亮登场!

热门文章

  1. 2020世界大学生超级计算机竞赛,世界大学生超级计算机竞赛 清华大学夺冠 | 外教网...
  2. java dateformat gmt_如何将java.util.Date转换为GMT格式
  3. hive中表类型和ETL
  4. html瀑布流布局原理,css 实现瀑布流布局效果
  5. 光复用技术中三种重要技术_颈前深蹲中横杠的精确位置和安全稳固抓握杠铃的三种方式及技术细节!!...
  6. 关于进入uboot后卡住,无法进入内核
  7. 七牛云图床外链失效之解决办法
  8. 计算机网络大作业telnet,计算机网络大作业-TCP包分析.pdf
  9. Chisel 教程翻译 之 第一章:概述介绍《Digital Design with Chisel》
  10. 【Linux网络编程】UDP洪水攻击