精华内容
下载资源
问答
  • c++调用python接口实现压缩拆分文件功能,压缩拆分的功能都是python实现,有pythton源码,直接运行c++就可以。
  • exsel文件打开打csv文件超过一定大小就打开了,使用此工具把大的CSV文件拆分/割裂成小的CSV文件打开
  • 该工具使用java开发。可以对超大文件进行拆分,可解决超大文件不能一次传输的问题。操作步骤:打开压缩文件,执行里面的dm.exe可以选择拆分文件,拆分完后,可以选择生成的json文件进行合并。
  • 为了解决上传网盘时单文件大小限制,或向某某公司邮箱发送文件时的文件大小限制,我们常常需要将较大的文件拆分成多个在限制大小内的小文件,进行传输后,在使用端再将多个小文件合并为一个完整的大文件进行使用。...

    为了解决上传网盘时单文件大小限制,或向某某公司邮箱发送文件时的文件大小限制,我们常常需要将较大的文件拆分成多个在限制大小内的小文件,进行传输后,在使用端再将多个小文件合并为一个完整的大文件进行使用。

    使用 zip 命令压缩文件

    1.使用 zip 命令压缩文件,并结合 split 命令来分卷:
    zip - <file_name> | split -b <max_size>
    上述命令将名为file_name的文件压缩成 zip 包并分成不超过max_size的文件,分解后文件名默认是 x* ,后缀为 2 位 a-z 字母,如 aa、ab。
    其中,split命令如下: 

    split [-a] [-b] [-C] [-l] [要分割的文件名] [分割后的文件名前缀]
    –version 显示版本信息
    – 或者-l,指定每多少行切割一次,用于文本文件分割
    -b 指定切割文件大小,单位 m 或 k
    -C 与-b类似,但尽量维持每行完整性
    -d 使用数字而不是字母作为后缀名
    -a 指定后缀名的长度,默认为2位

    例如:

    #把 wm6.dmg 这个文件以 wm6.dmg. 开头,按1024m大小进行分割
    split -b 1024m wm6.dmg wm6.dmg.

    2.要合并已分解的文件,可使用cat命令恢复成 zip 文件后使用 unzip 或其它主流解压软件解压,命令如下:
    cat <files_name_1> <files_name_2> <files_name_3> > <files_name>

    意思是把files_name_1、2、3这三个文件进行合并,合并(创建)成一个叫files_name的文件;
    例如:
    cat x* > file.zip

    使用 tar 命令压缩文件

    1. 使用 tar 命令来创建压缩文件,如:
      tar czvf - <file_name> | split -b <max_size>
    2. 使用 tar 解压:
      cat x* | tar xzvf -

     

    展开全文
  • 多部分压缩 用于压缩和拆分文件/合并和解压缩文件的 PHP 类。
  • java 大文件拆分压缩传输

    千次阅读 2019-06-25 13:34:53
    当前需求 每个文件压缩前最大为50M,超出文件限制指标在新文件中存储,...文件拆分、合并 文件拆分、合并 生成测试文件 public class GenerateFileDemo { public static void main(String[] args) throws IOEx...

    当前需求

    每个文件压缩前最大为50M,超出文件限制指标在新文件中存储,新文件序号+1,序号从001开始最大为999,性能文件生成后采用gzip压缩存储。

    分析

    1. 文件压缩、解压
    2. 文件拆分、合并

    在这里插入图片描述

    文件拆分、合并

    生成测试文件

    public class GenerateFileDemo {
    
    	public static void main(String[] args) throws IOException {
    		String path = CompressDemo.class.getResource("/").getPath();
    		BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(path + "big.data"));
    		String str = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1";
    		for (int i = 0; i < 1000000; i++) {
    			bufferedWriter.write(i + str);
    			bufferedWriter.newLine();
    		}
    		bufferedWriter.flush();
    		bufferedWriter.close();
    	}
    }
    

    生成文件900多MB
    在这里插入图片描述
    文件拆分

    public class BigFileWriteDemo {
    	// 1MB
    	private static final int FILE_SIZE = 1 * 1024 * 1024;
    	// 文件结束标识
    	private static final int EOF = -1;
    
    	public static void main(String[] args) throws IOException {
    		
    		String path = BigFileWriteDemo.class.getResource("/").getPath();
    		System.out.println(path);
    		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path + "big.data"));
    		int available = bis.available();
    		System.out.println(available);
    		
    		System.out.println(String.format("%.2fMB", available * 1.0 / FILE_SIZE));
    		
    		// 拆分成每个为50Mb大小的文件
    		int saveSize = 50 * FILE_SIZE;
    		byte[] bytes = new byte[saveSize];
    		
    		int length = EOF;
    		// 子文件下标
    		int filenameExt = 1000;
    		while ( (length = bis.read(bytes)) > EOF ) {
    			try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path + "sub-big-" + (filenameExt++) + ".data"));) {
    				bos.write(bytes, 0, length);
    			}
    		}
    		bis.close();
    	}
    }
    

    生成子文件19个,其中18个大小为50MB
    **加粗样式**

    合并文件

    public class BigFileReadDemo {
    
    	// 1MB
    	private static final int FILE_SIZE = 1 * 1024 * 1024;
    	// 文件结束标识
    	private static final int EOF = -1;
    
    	public static void main(String[] args) throws IOException {
    		
    		String path = BigFileReadDemo.class.getResource("/").getPath();
    		// 这里zzz为通用占位符、匹配拆分文件时下标数字
    		String filename = "sub-big-zzz.data".replace("zzz", "\\d+");
    		
    		File file = new File(path);
    		if (!file.isDirectory()) {
    			return;
    		}
    		
    		String name = file.getName();
    		System.out.println(name);
    		String[] list = file.list();
    		Stream<String> stream = Arrays.stream(list);
    		
    		List<String> subFileNames = stream.filter(s->s.matches(filename))
    				.sorted()
    				.collect(Collectors.toList());
    		
    		if (subFileNames == null || subFileNames.size() < 1) {
    			return ;
    		}
    		
    		// 组装文件
    		BufferedOutputStream bos = new BufferedOutputStream(
    				new FileOutputStream(path + "composite-big.data"));
    		for (String subFilename : subFileNames) {
    			try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path + subFilename));) {
    				int available = bis.available();
    				System.out.println(available);
    				// 每次读取1Mb大小的文件
    				byte[] bytes = new byte[FILE_SIZE];
    				int length = EOF;
    				while ((length = bis.read(bytes)) > EOF) {
    					bos.write(bytes, 0, length);
    				}
    				bos.flush();
    			}
    		}
    		bos.close();
    	}
    }
    

    合并结果,与原文件大小一直
    在这里插入图片描述

    文件压缩、解压

    定义抽象接口

    public interface Compress {
    	/**
    	 * 数据压缩
    	 */
    	byte[] compress(byte[] data) throws IOException;
    
    	/**
    	 * 数据解压
    	 */
    	byte[] uncompress(byte[] data) throws IOException;
    
    }
    

    抽象压缩解压算法

    public abstract class AbstractCompress implements Compress {
    	
    	// 构建模板方法
    	protected abstract OutputStream createOutputStream(OutputStream output) throws IOException;
    	protected abstract InputStream createInputStream(InputStream input) throws IOException;
    	
    	@Override
    	public byte[] compress(byte[] data) throws IOException {
    		ByteArrayOutputStream os = new ByteArrayOutputStream();
    		try (OutputStream cs = createOutputStream(os)) {
    			cs.write(data);
    		}
    		return os.toByteArray();
    	}
    
    	@Override
    	public byte[] uncompress(byte[] data) throws IOException {
    		ByteArrayOutputStream baos = new ByteArrayOutputStream();
    		byte[] buffer = new byte[4096];
    		int len = 0;
    		
    		try (InputStream us = createInputStream(new ByteArrayInputStream(data))) {
    			while ((len = us.read(buffer)) != -1) {
    				baos.write(buffer, 0, len);
    			}
    		}
    		return baos.toByteArray();
    	}
    }
    

    实现Gzip算法

    /**
     * gzip算法
     * 
     * <p>继承关系,基于DeflaterOutputStream的包装</p>
     * <pre>
     * java.lang.Object
     *   java.io.OutputStream
     *     java.io.FilterOutputStream
     *       java.util.zip.DeflaterOutputStream
     *         java.util.zip.GZIPOutputStream
     * </pre>
     * 
     */
    public class GzipCompress extends AbstractCompress {
    
    	@Override
    	protected OutputStream createOutputStream(OutputStream output) throws IOException {
    		return new GZIPOutputStream(output);
    	}
    
    	@Override
    	protected InputStream createInputStream(InputStream input) throws IOException {
    		return new GZIPInputStream(input);
    	}
    }
    

    编写工具类

    public class CompressUtil {
    	private static final Compress INSTANCE = new GzipCompress();
    	
    	private CompressUtil() {}
    	
    	public static byte[] compress(byte[] data) throws IOException {
    		return INSTANCE.compress(data);
    	}
    
    	public static byte[] uncompress(byte[] data) throws IOException {
    		return INSTANCE.uncompress(data);
    	}
    	
    }
    

    测试

    1. 压缩文件
    public class CompressDemo {
    	private static final String EXT = ".zip";
    
    	public static void main(String[] args) throws IOException {
    		
    		String path = CompressDemo.class.getResource("/").getPath();
    		System.out.println(path);
    		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path + "demo.json"));
    		int available = bis.available();
    		byte[] data = new byte[available];
    		System.out.println(data.length);
    		bis.read(data);
    		byte[] compressData = CompressUtil.compress(data);
    		System.out.println(compressData.length);
    		
    		// 保持压缩文件
    		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path + "demo.json" + EXT));
    		bos.write(compressData);
    		
    		bis.close();
    		bos.close();
    	}
    }
    
    

    压缩成功
    在这里插入图片描述

    1. 解压文件
    public class UnCompressDemo {
    	
    	private static final String EXT = ".zip";
    
    	public static void main(String[] args) throws IOException {
    		
    		String path = UnCompressDemo.class.getResource("/").getPath();
    		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path + "demo.json" + EXT));
    		int available = bis.available();
    		byte[] data = new byte[available];
    		System.out.println(data.length);
    		bis.read(data);
    		byte[] uncompressData = CompressUtil.uncompress(data);
    		System.out.println(uncompressData.length);
    		
    		BufferedReader uncompressStream = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(uncompressData)));
    		String line = null;
    		while ( (line = uncompressStream.readLine()) != null ) {
    			System.out.println(line);
    		}
    		bis.close();
    		uncompressStream.close();
    	}
    }
    
    

    输出原demo.json内容

    剩下只需要组装功能即可完成上述需求,不再演示

    展开全文
  • Original url:https://blog.csdn.net/xunan003/article/details/79068648有没有遇到某些...有个方法可以解决此类问题,将压缩包分成多个文件,问题就迎刃而解,这就叫:分卷压缩。如何进行分卷压缩与解压呢,有如...

    Original url:

    https://blog.csdn.net/xunan003/article/details/79068648

    有没有遇到某些网站上传复件时,单个文件有大小限制,导致上传失败呢?当然你可以采用更高的压缩率重新生成压缩包来解决,但如果还是超出大小限制,那该怎么办呢?有个方法可以解决此类问题,将压缩包分成多个文件,问题就迎刃而解,这就叫:分卷压缩。
    如何进行分卷压缩与解压呢,有如下几个命令可供使用:
    假设当前目录下有proc目录。

    tar -czf - proc | split -b 2m -d - proc.tar.gz #分卷压缩proc目录,并保持每个压缩包的大小不超过2m字节。命令执行后,会生成proc.tar.gz00、proc.tar.gz01等文件

    cat proc.tar.gz* | tar -xzf - #将各个分卷压缩包解压到当前目录

    cat proc.tar.gz* > proc.tar.gz #将各个分卷压缩包合成为一个proc.tar.gz文件

    附录:split命令的使用
    split proc.tar.gz -b 2m #将proc.tar.gz文件分割为多个小文件,并保持每个小文件的大小不超过2m字节。命令运行后,源文件依然存在。生成的小文件以默认格式命名,为:xaa、xab等
    split proc.tar.gz -b 2m -d #基本同上,只是生成的小文件以数字格式命名,为:x00、x01等
    split proc.tar.gz -b 2m -d proc.tar.gz #基本同上,只是生成的小文件名前缀是自定义的,为:proc.tar.gz00、proc.tar.gz01等

    split a.txt -C 300k -d a.txt #将a.txt文本文件分割为多个小文件,并保持每个小文件的大小不超过300k字节,而且尽量保持每行的完整性



    解压:

    解压xxx.tar.gz00   xxx.tar.gz01   xxx.tar.gz02   xxx.tar.gz03   xxx.tar.gz04  ……先用以下命令合并
     cat xxx.tar.gz*  >>xxx.tar.gz
    然后用tar  -vzxf  xxx.tar.gz解压


    展开全文
  • 使用split命令拆分文件。 split -b 4000 -d -a 2 split_file split_file. -b:以文件大小拆分,默认单位M,可以通过修改后数字以及换单位来自由选择拆分文件大小,比如-b 200K -l:以文件行数拆分 -d:拆分后...

    使用split命令拆分文件。

    split -b 4000 -d -a 2 split_file split_file.

    -b:以文件大小拆分,默认单位M,可以通过修改后数字以及换单位来自由选择拆分后文件大小,比如-b 200K

    -l:以文件行数拆分

    -d:拆分后的的文件命令以数字为后缀,split_file.00,split_file.01等等

    -a:后缀的长度,默认为两位数,可以更改数字。

     

    使用cat命令来还原拆分的文件。

    cat split_file.* split_file

     

    展开全文
  • unzip testall.zip`# 1.先合并文件 cat test.z* &gt; testall.zip # 2....有个方法可以解决此类问题,将压缩包分成多个文件,问题就迎刃而解,这就叫:分卷压缩。 如何进行分卷压缩与解压呢,有如下...
  • java文件分割压缩

    2012-03-08 10:48:27
    java 版的文件分割压缩 可以对大文件进行拆分文件大小可定义
  • 文件yocto.log的处理为例 源文件:yocto.log 压缩:yocto.log.tar.gz $ tar -czvf yocto.log.tar.gz yocto.log 拆分:yocto.log.tar.gz.00,yocto.log.tar.gz.01,yocto.log.tar.gz.02,yocto.log.tar.gz....
  •  此次对于项目中的日志打印做了一些了解及线上系统的应用。 ... //新建压缩文件 FileInputStream fis = null; ZipOutputStream out = null; byte[] buf = new byte[1024]; try { fis =...
  • File-zip文件拆分合并

    千次阅读 2018-11-23 11:01:57
    public class FileDeal { ... * 文件分割(拆分大的zip文件为小的zip文件)  */ public static synchronized int splitZip(String fileSrc, String destSrc){ File file=new File(fileSrc); if(f...
  • 目录一、文件压缩二、文件分割三、文件合并四、文件解压...-c:建立一个压缩文件指令; -v:压缩过程中是否显示文件; -f :使用档名; 二、文件分割 split -b 40M -d -a 2 test.tar.gz test.tar.gz. 参数含义: -...
  • pdf文件拆分为单个pdfArticle Update 13-March-2020: I removed the full source code and the code snippets. The article that remains should act as a "design roadmap" for members who want to write the code...
  • ubuntu下分割大压缩文件

    千次阅读 2018-12-14 23:27:14
    1.要分割的文件夹名:test 2.终端输入: tar -zcvf - test | split -b 15G -d -a 1 - test.tar.gz ...“15g”代表分割后每个压缩文件的大小 3.合并上面分割的压缩包 cat test.tar.gz* &gt; test.tar.gz ...
  • 本项目的功能是上传文件 处理图片(加水印,生成缩略图,压缩图片) 生成XML文档 拆分XML文档
  • 文件分割成小文件文件压缩(zlib)
  • 1、压缩文件 非打包 tar -czvf test.tar.gz test.sql //压缩 test.sql文件为test.tar.gz(会保留原文件) tar -czvf test.tar.gz test/ //压缩目录下的文件 (不过目录的压缩效果就一般了) 2、列出压缩文件内容 tar ...
  • 目录1,在linux 将文件拆分2,解压缩多个文件3,总结 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/104256596 未经博主允许不得转载。 博主地址是:http://blog.csdn.net/freewebsys 1,在...
  • Atlas拆分工具.zip

    2020-09-01 17:35:13
    使用python3.4环境开发,引入PIL库即可使用,其他引入的...由于Laya图集本身支持旋转,且压缩过资源取出再放大会失真,就支持拆分带旋转和缩放的图集了。使用上直接将对应atlas文件和png文件放在base文件夹下即可。
  • 轻松易用的PDF工具,可用于编辑、转换、合并、拆分压缩PDF文件。可与Gmail整合。 【插件开发者】 @sumizuko9299 【插件更新】 2021-01-13 09:40:53 【插件版本】 1.1 【插件标签】 热门 工具 ...
  • 如何从Linux终端压缩或解压缩文件

    千次阅读 2020-09-21 12:38:12
    您可以使用一些常见Linux终端命令创建一个zip归档文件或从一个文件解压缩文件。 ZIP压缩存档文件格式 (The ZIP Compressed Archive File Format) Thanks to the dominance of the ZIP format in the Windows realm,...
  • Spark读取压缩文件性能分析

    千次阅读 2019-08-23 14:18:49
    引言 HDFS上分布式文件存储,成为大数据平台...Spark为提供兼容性,同时支持多种压缩包直接读取,方便于用户使用,不用提前对压缩格式处理,但各种压缩格式各有优缺点,若注意将导致Spark的能力无法发挥出来。故...
  • 使用二进制文件存储,可以在不压缩数据的前提下尽量的节省空间。 情景:在使用Unity制作游戏的时候,需要存储一个非常大的信息。大概是千万级别(8192×8192)的byte数组。然后计算内存大概是8192*8192/1024/1024 =...
  • 首先,因为网络传输是存在time-out参数的,部分网站支持断点续传,当文件上传时间过长时,与网站的连接会断开,导致文件上传失败。其次,大部分网盘会有单文件上传大小限制,通过分块压缩,可以突破这一限制,上传...
  • 声明 本文声明这个博客并非广告,而只是在日常工作中发现了他的一些要用时,超级实用的一些功能!!!!!...进行拆分?? 解决办法 用WPS均可以解决上面的问题!!!!(顺便说一个冷知识:WPS...
  • tar包与zip包拆分与合并大文件

    千次阅读 2020-07-09 11:00:32
    有时候我们会遇到较大的文件在网络上传输不便,可以将其拆分传输,然后再合并,可以加快传输速率,同时传输出错时可以节约时间。 拆tar.gz包: tar -czf - big.tar.gz | split -b 1024m -d - big.tar.gz. 合并: cat ...
  • 最后才想到Mac用有自带命令可以处理压缩文件,于是在网上找了找,如下: 使用 zip 命令压缩文件 使用 zip 命令压缩文件,并结合 split 命令来分卷 格式:zip - <路径><文件名> | split -b <压缩文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,432
精华内容 16,572
关键字:

压缩文件能不能拆分