JAVA IO(5)使用序列流进行文件切割和合并

java实现文件分割(附完整源码) 阅读详情
import java.io.*;
import java.util.*;

public class Main{
     /* 文件切割  */
     private static final int SIZE = 1024*1024;
     
     public static void splitFile(File file) throws IOException {
         
         FileInputStream fis = new FileInputStream(file);
         byte[] buffer = new byte[SIZE]; //切成n块SIZE大小
         FileOutputStream fos = null;
         int len = 0;
         int cnt = 1;
         
         /*使用properties记录切割文件产生的个数和被切割文件的名称,方便合并时使用 */
         Properties prop = new Properties();
         
         File partDir = new File("C:\\partFiles");
         if(!partDir.exists())
              partDir.mkdir();
         while((len = fis.read(buffer)) != -1) {
              fos = new FileOutputStream(new File(partDir,(cnt++)+".part")); //自定义碎片文件后缀.part
              fos.write(buffer,0,len);
              fos.close();
         }
         
         //将切割文件信息保存在Properties中
         prop.setProperty("partNum", cnt+"");
         prop.setProperty("fileName", file.getName());
         fos = new FileOutputStream(new File(partDir,(cnt++)+".properties"));
         prop.store(fos, "");//将properties集合中的信息存储到文件中。
         fos.close();
         fis.close();
     }
     
     /* 合并碎片文件 */
     public static void mergeFile(File dir) throws IOException {
         
         File[] files = dir.listFiles(new SuffixFilter(".properties"));
         if(files.length != 1)
              throw new RuntimeException(dir+"配置文件不存在或配置文件重复");
         
         //记录配置文件信息
         File confile = files[0];
         
         //获取该文件信息
         Properties prop = new Properties();
         FileInputStream fis = new FileInputStream(confile);
         prop.load(fis);
         
         //获取prop中的信息
         String fileName = prop.getProperty("filename");
         int cnt = Integer.parseInt(prop.getProperty("partNum"));
         
         //获取该文件夹下所有碎片,统计个数
         File[] partFiles = dir.listFiles(new SuffixFilter(".part"));
         if(partFiles.length != (cnt-1))
              throw new RuntimeException("碎片个数不对,应为"+cnt+"个");
         
         //添加集合
         ArrayList<FileInputStream> a1 = new ArrayList<FileInputStream>();
         for(int i=0; i<partFiles.length; i++)
              a1.add(new FileInputStream(files[i]));
         
         Enumeration<FileInputStream> en = Collections.enumeration(a1);
         SequenceInputStream sis = new SequenceInputStream(en);
         FileOutputStream fos = new FileOutputStream(new File(dir,fileName));
         
         byte[] buffer = new byte[1024*1024];
         int len = 0;
         
         while((len = sis.read(buffer)) != -1) {
              fos.write(buffer,0,len);
         }
         fos.close();
         sis.close();
     }
     
     public static void main(String[] args) throws IOException {
         splitFile(new File("D:\\demo4.txt"));
         mergeFile(new File("C:\\partFiles"));
         
     }    
}



class SuffixFilter implements FilenameFilter {
    
    private String suffix;
    
    public SuffixFilter(String suffix) {
        super();
        this.suffix = suffix;
    }

    @Override
    public boolean accept(File dir, String name) {
        
        return name.endsWith(suffix);
    }

}



 

Java做的文件分割合并工具 命令 “java -jar 分割合并工具.jar” 运行。 博文链接:https://zwm512327.iteye.com/blog/197665 立即下载

相关推荐

Java文件分割程序源代码.rar

Java文件分割程序源代码,多平台文件切割,与CofeCut兼容的切割算法。

C#字节流通信格式

C#字节流通信格式 类似通信格式的实现关键点: byte数组转float的实现,BitConvetor.toSingle() float类型转byte,BitConverter.GetBytes #客户端发送 public byte[] funFloattoBytes(byte command,float[] coordinate_camera) { List<byte> bufferList = new L...

ba_wang_mao的专栏 1003

用java实现任意文件分割

此文件分割合并工具小于10KB,比一般此类工具小很多,速度也很快。支持分割任意文件类型。

byte[] buffer=new byte[1024]

byte[] buffer=new byte[4096] byte[]   buffer   =   new   byte[4096]       4096=1024*4=4K         只是在内存中开辟块缓冲区而已。大小随便写,只要不超过你实际可用内存大小就好。不过太大或者太小都会对性能有影响。所以通常采用   4   的倍数,或者 1K   的倍数作为

niuzaiwenjie的专栏 1万+

Java如何将大文件切割成小文件

主要为大家详细介绍了Java如何将大文件切割成小文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

PHP服务端 苹果支付(IAP)处理

公司做的app需要做IAP订阅支付,开始觉得和微信的支付流程差不多,做起来还是有点麻烦,主要是网上的文章很少,不能拿来主义。自己做完总结一下,希望对小伙伴们有帮助我就很欣慰了。代码写的不好 不要喷我。。。 首先讲一下我的业务逻辑,也就是php服务端需要做什么事情。 先上图: 下面我详细的讲一下每...

山水的博客 1万+

Android在读入字节流时的注意点

错误代码: StringBuilder jsonString = new StringBuilder(); byte[] buffer = new byte[1024]; try { while( inputStream.read(buffer) != -1) { String string = new String(buffer); jsonString.appen

laonaruto的专栏 594

思科模拟器Cisco Packet Tracer交换机的管理配置

一、交换机的管理方式:带内管理和带外管理 通过交换机的 Console 端口管理交换机属于带外管理;这种管理方式不占用交换机的网络端口,第一次配置交换机必须利用 Console 端口进行配置。 通过 Telnet、拨号等方式属于带内管理。 二、控制台配置思科交换机 1.新建拓扑图 新建拓扑,选择console线连接交换机和PC,一端接交换机的console口,一端接PC的RS 232 口(...

qq_37992321的博客 2万+

byte[1024]

byte[] buf = new byte[1024]; 中buf是多大。比如上传文件,好像不管上传的内容有多大,都能用这个Java code?12345InputStream in = s.getInputStream();                 byte[] buf = new byte[1024];        int len = in.read(buf);        Str...

yzppp 5404

Vivado实战:UltraScale/UltraScale+器件eFUSE寄存器配置与安全编程全解析

本文详细解析了Xilinx UltraScale/UltraScale+器件中eFUSE寄存器的配置与安全编程方法。从芯片唯一身份标识到加密密钥烧录,再到用户寄存器的灵活应用和安全控制寄存器的配置技巧,全面介绍了如何利用eFUSE功能提升硬件安全性。文章还提供了JTAG接口安全管理和NKZ文件备份方案,帮助开发者避免常见陷阱,确保安全编程的可靠性。

weixin_42535703的博客 428

UnityWebGL异常捕获全攻略:从报错提示到完美解决的3种配置方案

本文详细解析了UnityWebGL项目中异常捕获的三种核心配置方案:禁用异常、仅捕获显式异常以及完全捕获异常(无堆栈跟踪)。通过对比不同方案在构建体积、运行性能及错误信息详细度上的差异,帮助开发者根据开发、测试与发布阶段的不同需求,选择并配置最优的异常处理策略,从而有效提升WebGL应用的调试效率和线上稳定性。

5f4d3s2a1q的博客 398

Java中IO流常见的几种流

序列流 序列流合并文件 package com.cloud.day5; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.SequenceInputStream;

午-夜 1万+

Steam游戏服务器攻防全景解读——如何构建游戏级抗DDoS防御体系?

当检测到TCP/UDP混合攻击时,应触发预设的熔断策略:优先保障游戏大厅服务的UDP 27015端口,临时限制匹配系统的TCP连接数。针对Steam游戏服务器特有的UDP 4380端口,需配置协议合规性检查规则:限制数据包长度不超过128字节,强制校验请求来源IP的真实性。Steam游戏服务器的防护需要平衡安全性与玩家体验,通过协议深度解析、智能流量调度和服务端加固的三维防御体系,可构建游戏行业专属的抗DDoS护城河。答:采用弹性防护方案,基础防护带宽保持50Gbps,遭遇攻击时自动扩展至T级清洗能力。

2501_91486804的博客 1455

序列流 SequenceInputStream

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- 21,序列流SequenceInputStream 21.1 序列流的作用 序列流也是字节流InputStream的子类,序列流可以完成对多个字节流的合并。 其构造函数可以接收两个字节流对象,或一个包含字节流的枚举对象。

loneswordman的专栏 926

数据仓库的复用性:设计和构建一个高复用性的数仓

数据仓库的复用性是指在数据仓库的设计和使用过程中,能够实现数据、模型、流程、工具等多个层面的重复利用,减少重复开发,提高开发效率,降低维护成本,并增强灵活性和可扩展性。

z1941563559的博客 1307

蓝凌EIS智慧协同平台frm_form_upload.aspx接口存在任意文件上传漏洞

蓝凌EIS智慧协同平台frm_form_upload.aspx接口存在任意文件上传漏洞

nnn2188185的博客 357

23(5) IO文件切割合并-对象的序列化

23(5) IO文件切割合并-对象的序列化 导语: 可以说整个下午都在玩伊苏7,挺好玩的,现在也没心情打代码,先把代码弄成mk格式的html 实现了Serializable接口。详细描述了该接口的作用和序列号的作用 读取配置文件信息的原始方法,也是Properties load方法的原理 切割文件,并用Properties存储碎片文件信息 很恐怖的合并程序 对恐怖程序进行优化,使用了集合 使...

自行车的博客 203

CODESYS数据处理合集(高低字节/ 字/浮点数/位)

VAR_INPUT//字节0//字节1END_VARVAREND_VAR。

RXXW_Dor的博客 354

Java IO流实例 --- 文件切割合并配置

文章目录1 文件切割2 文件合并3 改进 1 文件切割 切割方式: 1 按大小切,文件有多大,每份切多少,都是事先规定好的 2 按重量切,不管文件有多大,就切 N份 — 这种方式比较好 有几个文件,就需要几个输出流。一个文件,关联一个流 用读取流 关联源文件 代码实现 FileInputStream fis = new FileInputStream(file); /* 定义一个1M的缓...

ly_jing的博客 356

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

java中的文件分割和合并

需求: 1、将指定文件分割成指定大小的碎片文件 2、将碎片文件合并成完整的文件 分析: 1、将指定文件分割成指定大小的碎片文件 源:一个文件    目的:多个文件 根据指定碎片大小创建缓冲区数组,用来存储各指定长度的分片文件。循环创建字节流输出流,关联各个碎片文件。 2、将碎片文件合并成完整的文件 源:多个文件    目的:一个文件 创建多个字节输入流关联碎片文件,合并成序列流,

upupday19的博客 1101

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

(20)IO流之SequenceInputStream 序列流

序列流,对多个流进行合并。 SequenceInputStream 表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。 序列流,对多个流进行合并。 SequenceInputStream 表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一...

apple3515的博客 119

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

java properties 合并_Java学习日志(20-2-IO流-Properties与流合并切割)

Properties简述Properties是hashtable的子类具备map集合的特点,储存的键值对都是字符串是集合和IO技术相结合的集合容器可以用于键值对形式的配置文件Properties存取// 设置和获取元素public static void setAndGet(){Properties prop=new Properties();prop.setProperty("zhangsan"...

weixin_39957027的博客 235

黑马程序员——Java基础:IO(二):File类、Properties类、打印流、序列流......

一、File类 File类:在IO包中,是用来将文件封装成对象,方便对文件与文件夹的属性信息进行操作,可以作为参数传递给流的构造函数,File类的实例是不可变的;也就是说,一旦创建,File对象表示的抽象路径名将永不改变。流只能操作数据,不能操作文件。 示例1:创建File对象

u012770105的博客 578

【20】IO流3_File类,递归,Properties,合并流,切割文件

7.11  File类常见方法: 1,创建。          booleancreateNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。                                                         和输出流不一样,输出流对象一建立创建文件。而且文件已经存在, 会覆盖。            bo

努力后才会有收获....加油! 1238

Java基础——IO(二)——File类、Properties类、打印流、序列流(合并流)

第一讲 File类 一、概述 1、File类是文件和目录路径的抽象表现形式; 2、用来将文件或文件夹封装成对象; 3、File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变; 4、File类的对象可以作为参数传递给流的构造函数; 5、

daybreak2015的博客 494
上一篇: JAVA IO(4)PrintWriter/PrintReader
下一篇: JAVA IO(6)Serialiazable
donCoder
博客等级 码龄9年 65粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值