精华内容
下载资源
问答
  • public class ZipUtil { /** * 递归压缩文件32313133353236313431303231363533e58685e5aeb931333363373737夹 * @param srcRootDir 压缩文件夹根目录的子路径 * @param file 当前递归压缩的文件或目录对象...

    展开全部

    package zip;

    import java.io.BufferedInputStream;

    import java.io.BufferedOutputStream;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileOutputStream;

    import java.util.Enumeration;

    import java.util.zip.CRC32;

    import java.util.zip.CheckedOutputStream;

    import java.util.zip.ZipEntry;

    import java.util.zip.ZipFile;

    import java.util.zip.ZipOutputStream;

    import org.apache.commons.lang3.StringUtils;

    public class ZipUtil {

    /**

    * 递归压缩文件32313133353236313431303231363533e58685e5aeb931333363373737夹

    * @param srcRootDir 压缩文件夹根目录的子路径

    * @param file 当前递归压缩的文件或目录对象

    * @param zos 压缩文件存储对象

    * @throws Exception

    */

    private static void zip(String srcRootDir, File file, ZipOutputStream zos) throws Exception

    {

    if (file == null)

    {

    return;

    }

    //如果是文件,则直接压缩该文件

    if (file.isFile())

    {

    int count, bufferLen = 1024;

    byte data[] = new byte[bufferLen];

    //获取文件相对于压缩文件夹根目录的子路径

    String subPath = file.getAbsolutePath();

    int index = subPath.indexOf(srcRootDir);

    if (index != -1)

    {

    subPath = subPath.substring(srcRootDir.length() + File.separator.length());

    }

    ZipEntry entry = new ZipEntry(subPath);

    zos.putNextEntry(entry);

    BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));

    while ((count = bis.read(data, 0, bufferLen)) != -1)

    {

    zos.write(data, 0, count);

    }

    bis.close();

    zos.closeEntry();

    }

    //如果是目录,则压缩整个目录

    else

    {

    //压缩目录中的文件或子目录

    File[] childFileList = file.listFiles();

    for (int n=0; n

    {

    childFileList[n].getAbsolutePath().indexOf(file.getAbsolutePath());

    zip(srcRootDir, childFileList[n], zos);

    }

    }

    }

    /**

    * 对文件或文件目录进行压缩

    * @param srcPath 要压缩的源文件路径。如果压缩一个文件,则为该文件的全路径;如果压缩一个目录,则为该目录的顶层目录路径

    * @param zipPath 压缩文件保存的路径。注意:zipPath不能是srcPath路径下的子文件夹

    * @param zipFileName 压缩文件名

    * @throws Exception

    */

    public static void zip(String srcPath, String zipPath, String zipFileName) throws Exception

    {

    if (StringUtils.isEmpty(srcPath) || StringUtils.isEmpty(zipPath) || StringUtils.isEmpty(zipFileName))

    {

    throw new ParameterException(ICommonResultCode.PARAMETER_IS_NULL);

    }

    CheckedOutputStream cos = null;

    ZipOutputStream zos = null;

    try

    {

    File srcFile = new File(srcPath);

    //判断压缩文件保存的路径是否为源文件路径的子文件夹,如果是,则抛出异常(防止无限递归压缩的发生)

    if (srcFile.isDirectory() && zipPath.indexOf(srcPath)!=-1)

    {

    throw new ParameterException(ICommonResultCode.INVALID_PARAMETER, "zipPath must not be the child directory of srcPath.");

    }

    //判断压缩文件保存的路径是否存在,如果不存在,则创建目录

    File zipDir = new File(zipPath);

    if (!zipDir.exists() || !zipDir.isDirectory())

    {

    zipDir.mkdirs();

    }

    //创建压缩文件保存的文件对象

    String zipFilePath = zipPath + File.separator + zipFileName;

    File zipFile = new File(zipFilePath);

    if (zipFile.exists())

    {

    //检测文件是否允许删除,如果不允许删除,将会抛出SecurityException

    SecurityManager securityManager = new SecurityManager();

    securityManager.checkDelete(zipFilePath);

    //删除已存在的目标文件

    zipFile.delete();

    }

    cos = new CheckedOutputStream(new FileOutputStream(zipFile), new CRC32());

    zos = new ZipOutputStream(cos);

    //如果只是压缩一个文件,则需要截取该文件的父目录

    String srcRootDir = srcPath;

    if (srcFile.isFile())

    {

    int index = srcPath.lastIndexOf(File.separator);

    if (index != -1)

    {

    srcRootDir = srcPath.substring(0, index);

    }

    }

    //调用递归压缩方法进行目录或文件压缩

    zip(srcRootDir, srcFile, zos);

    zos.flush();

    }

    catch (Exception e)

    {

    throw e;

    }

    finally

    {

    try

    {

    if (zos != null)

    {

    zos.close();

    }

    }

    catch (Exception e)

    {

    e.printStackTrace();

    }

    }

    }

    /**

    * 解压缩zip包

    * @param zipFilePath zip文件的全路径

    * @param unzipFilePath 解压后的文件保存的路径

    * @param includeZipFileName 解压后的文件保存的路径是否包含压缩文件的文件名。true-包含;false-不包含

    */

    @SuppressWarnings("unchecked")

    public static void unzip(String zipFilePath, String unzipFilePath, boolean includeZipFileName) throws Exception

    {

    if (StringUtils.isEmpty(zipFilePath) || StringUtils.isEmpty(unzipFilePath))

    {

    throw new ParameterException(ICommonResultCode.PARAMETER_IS_NULL);

    }

    File zipFile = new File(zipFilePath);

    //如果解压后的文件保存路径包含压缩文件的文件名,则追加该文件名到解压路径

    if (includeZipFileName)

    {

    String fileName = zipFile.getName();

    if (StringUtils.isNotEmpty(fileName))

    {

    fileName = fileName.substring(0, fileName.lastIndexOf("."));

    }

    unzipFilePath = unzipFilePath + File.separator + fileName;

    }

    //创建解压缩文件保存的路径

    File unzipFileDir = new File(unzipFilePath);

    if (!unzipFileDir.exists() || !unzipFileDir.isDirectory())

    {

    unzipFileDir.mkdirs();

    }

    //开始解压

    ZipEntry entry = null;

    String entryFilePath = null, entryDirPath = null;

    File entryFile = null, entryDir = null;

    int index = 0, count = 0, bufferSize = 1024;

    byte[] buffer = new byte[bufferSize];

    BufferedInputStream bis = null;

    BufferedOutputStream bos = null;

    ZipFile zip = new ZipFile(zipFile);

    Enumeration entries = (Enumeration)zip.entries();

    //循环对压缩包里的每一个文件进行解压

    while(entries.hasMoreElements())

    {

    entry = entries.nextElement();

    //构建压缩包中一个文件解压后保存的文件全路径

    entryFilePath = unzipFilePath + File.separator + entry.getName();

    //构建解压后保存的文件夹路径

    index = entryFilePath.lastIndexOf(File.separator);

    if (index != -1)

    {

    entryDirPath = entryFilePath.substring(0, index);

    }

    else

    {

    entryDirPath = "";

    }

    entryDir = new File(entryDirPath);

    //如果文件夹路径不存在,则创建文件夹

    if (!entryDir.exists() || !entryDir.isDirectory())

    {

    entryDir.mkdirs();

    }

    //创建解压文件

    entryFile = new File(entryFilePath);

    if (entryFile.exists())

    {

    //检测文件是否允许删除,如果不允许删除,将会抛出SecurityException

    SecurityManager securityManager = new SecurityManager();

    securityManager.checkDelete(entryFilePath);

    //删除已存在的目标文件

    entryFile.delete();

    }

    //写入文件

    bos = new BufferedOutputStream(new FileOutputStream(entryFile));

    bis = new BufferedInputStream(zip.getInputStream(entry));

    while ((count = bis.read(buffer, 0, bufferSize)) != -1)

    {

    bos.write(buffer, 0, count);

    }

    bos.flush();

    bos.close();

    }

    }

    public static void main(String[] args)

    {

    String zipPath = "d:\\ziptest\\zipPath";

    String dir = "d:\\ziptest\\rawfiles";

    String zipFileName = "test.zip";

    try

    {

    zip(dir, zipPath, zipFileName);

    }

    catch (Exception e)

    {

    e.printStackTrace();

    }

    String zipFilePath = "D:\\ziptest\\zipPath\\test.zip";

    String unzipFilePath = "D:\\ziptest\\zipPath";

    try

    {

    unzip(zipFilePath, unzipFilePath, true);

    }

    catch (Exception e)

    {

    e.printStackTrace();

    }

    }

    }

    展开全文
  • 关于ZIP大文件压缩

    2021-02-28 08:21:18
    //将每个文件用ZipArchiveEntry封装//再用ZipArchiveOutputStream写到压缩文件中 for(File file : files) {if (file != null) { ZipArchiveEntry zipArchiveEntry= newZipArchiveEntry(file, file.getName()); zaos....

    importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importorg.apache.commons.compress.archivers.ArchiveEntry;importorg.apache.commons.compress.archivers.zip.Zip64Mode;importorg.apache.commons.compress.archivers.zip.ZipArchiveEntry;importorg.apache.commons.compress.archivers.zip.ZipArchiveInputStream;importorg.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;public classZipHelper {public static voidmain(String[] args) {

    File[] files=new File[1];

    File tmpFile=new File("F:\\ios10.8.2\\macos.dmg");

    files[0] =tmpFile;

    File zipFile=new File("F:\\ios10.8.2\\test.zip");

    ZipHelper.zipFiles(files, zipFile);

    }public static booleanzipFiles(File[] files, File zipFile) {boolean flag = false;if (files != null && files.length > 0) {

    ZipArchiveOutputStream zaos= null;try{

    zaos= newZipArchiveOutputStream(zipFile);//Use Zip64 extensions for all entries where they are required

    zaos.setUseZip64(Zip64Mode.AsNeeded);//将每个文件用ZipArchiveEntry封装//再用ZipArchiveOutputStream写到压缩文件中

    for(File file : files) {if (file != null) {

    ZipArchiveEntry zipArchiveEntry= newZipArchiveEntry(file, file.getName());

    zaos.putArchiveEntry(zipArchiveEntry);

    InputStream is= null;try{

    is= newFileInputStream(file);byte[] buffer = new byte[1024 * 5];int len = -1;while ((len = is.read(buffer)) != -1) {//把缓冲区的字节写入到ZipArchiveEntry

    zaos.write(buffer, 0, len);

    }

    zaos.closeArchiveEntry();

    }catch(Exception e) {

    flag= false;

    }finally{if (is != null)

    is.close();

    }

    }

    }

    zaos.finish();

    flag=true;

    }catch(Exception e) {

    flag= false;

    }finally{try{if (zaos != null) {

    zaos.close();

    }

    }catch(IOException e) {

    flag= false;

    }

    }

    }returnflag;

    }/*** 解压缩ZIP文件,将ZIP文件里的内容解压到saveFileDir目录下

    *@paramzipFilePath 待解压缩的ZIP文件名

    *@paramsaveFileDir 目标目录*/

    public static booleanupzipFile(String zipFilePath, String saveFileDir) {boolean flag = false;

    File file= newFile(zipFilePath);if(file.exists()) {

    InputStream is= null;

    ZipArchiveInputStream zais= null;try{

    is= newFileInputStream(file);

    zais= newZipArchiveInputStream(is);

    ArchiveEntry archiveEntry= null;//把zip包中的每个文件读取出来//然后把文件写到指定的文件夹

    while ((archiveEntry = zais.getNextEntry()) != null) {//获取文件名

    String entryFileName =archiveEntry.getName();//构造解压出来的文件存放路径

    String entryFilePath = saveFileDir +entryFileName;byte[] content = new byte[(int) archiveEntry.getSize()];

    zais.read(content);

    OutputStream os= null;try{//把解压出来的文件写到指定路径

    File entryFile = newFile(entryFilePath);

    os= newFileOutputStream(entryFile);

    os.write(content);

    }catch(IOException e) {

    flag= false;

    }finally{if (os != null) {

    os.flush();

    os.close();

    }

    }

    }

    flag=true;

    }catch(Exception e) {

    flag= false;

    }finally{try{if (zais != null) {

    zais.close();

    }if (is != null) {

    is.close();

    }

    }catch(IOException e) {

    flag= false;

    }

    }

    }returnflag;

    }

    }

    展开全文
  • java 压缩zip文件

    千次阅读 2021-03-17 12:58:07
    } } /** *//** * 压缩文件 * * @param zos * 压缩输出流 * @param file * 文件对象 * @param relativePath * 相对路径 * @throws IOException * @author * @date */ private static void zipFile(ZipOutputStream ...

    package com.demo;

    import java.io.BufferedOutputStream;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileNotFoundException;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.OutputStream;

    import java.util.Enumeration;

    import org.apache.tools.zip.ZipEntry;

    import org.apache.tools.zip.ZipFile;

    import org.apache.tools.zip.ZipOutputStream;

    /** *//**

    * 压缩/解压缩zip包处理类

    *

    * @author

    * @date

    */

    public class ZipUtil {

    /** *//**

    * 压缩

    *

    * @param zipFileName

    *            压缩产生的zip包文件名--带路径,如果为null或空则默认按文件名生产压缩文件名

    * @param relativePath

    *            相对路径,默认为空

    * @param directory

    *            文件或目录的绝对路径

    * @throws FileNotFoundException

    * @throws IOException

    * @author

    * @date

    */

    public static void zip(String zipFileName, String relativePath,

    String directory) throws FileNotFoundException, IOException {

    String fileName = zipFileName;

    if (fileName == null || fileName.trim().equals("")) {

    File temp = new File(directory);

    if (temp.isDirectory()) {

    fileName = directory + ".zip";

    } else {

    if (directory.indexOf(".") > 0) {

    fileName = directory.substring(0, directory

    .lastIndexOf("."))

    + "zip";

    } else {

    fileName = directory + ".zip";

    }

    }

    }

    ZipOutputStream zos = new ZipOutputStream(

    new FileOutputStream(fileName));

    try {

    zip(zos, relativePath, directory);

    } catch (IOException ex) {

    throw ex;

    } finally {

    if (null != zos) {

    zos.close();

    }

    }

    }

    /** *//**

    * 压缩

    *

    * @param zos

    *            压缩输出流

    * @param relativePath

    *            相对路径

    * @param absolutPath

    *            文件或文件夹绝对路径

    * @throws IOException

    * @author

    * @date

    */

    private static void zip(ZipOutputStream zos, String relativePath,

    String absolutPath) throws IOException {

    File file = new File(absolutPath);

    if (file.isDirectory()) {

    File[] files = file.listFiles();

    for (int i = 0; i < files.length; i++) {

    File tempFile = files[i];

    if (tempFile.isDirectory()) {

    String newRelativePath = relativePath + tempFile.getName()

    + File.separator;

    createZipNode(zos, newRelativePath);

    zip(zos, newRelativePath, tempFile.getPath());

    } else {

    zipFile(zos, tempFile, relativePath);

    }

    }

    } else {

    zipFile(zos, file, relativePath);

    }

    }

    /** *//**

    * 压缩文件

    *

    * @param zos

    *            压缩输出流

    * @param file

    *            文件对象

    * @param relativePath

    *            相对路径

    * @throws IOException

    * @author

    * @date

    */

    private static void zipFile(ZipOutputStream zos, File file,

    String relativePath) throws IOException {

    ZipEntry entry = new ZipEntry(relativePath + file.getName());

    zos.putNextEntry(entry);

    InputStream is = null;

    try {

    is = new FileInputStream(file);

    int BUFFERSIZE = 2 << 10;

    int length = 0;

    byte[] buffer = new byte[BUFFERSIZE];

    while ((length = is.read(buffer, 0, BUFFERSIZE)) >= 0) {

    zos.write(buffer, 0, length);

    }

    zos.flush();

    zos.closeEntry();

    } catch (IOException ex) {

    throw ex;

    } finally {

    if (null != is) {

    is.close();

    }

    }

    }

    /** *//**

    * 创建目录

    *

    * @param zos

    *            zip输出流

    * @param relativePath

    *            相对路径

    * @throws IOException

    * @author

    * @date

    */

    private static void createZipNode(ZipOutputStream zos, String relativePath)

    throws IOException {

    ZipEntry zipEntry = new ZipEntry(relativePath);

    zos.putNextEntry(zipEntry);

    zos.closeEntry();

    }

    /** *//**

    * 解压缩zip包

    *

    * @param zipFilePath

    *            zip文件路径

    * @param targetPath

    *            解压缩到的位置,如果为null或空字符串则默认解压缩到跟zip包同目录跟zip包同名的文件夹下

    * @throws IOException

    * @author

    * @date

    */

    public static void unzip(String zipFilePath, String targetPath)

    throws IOException {

    OutputStream os = null;

    InputStream is = null;

    ZipFile zipFile = null;

    try {

    zipFile = new ZipFile(zipFilePath);

    String directoryPath = "";

    if (null == targetPath || "".equals(targetPath)) {

    directoryPath = zipFilePath.substring(0, zipFilePath

    .lastIndexOf("."));

    } else {

    directoryPath = targetPath;

    }

    Enumeration entryEnum = zipFile.getEntries();

    if (null != entryEnum) {

    ZipEntry zipEntry = null;

    while (entryEnum.hasMoreElements()) {

    zipEntry = (ZipEntry) entryEnum.nextElement();

    if (zipEntry.isDirectory()) {

    directoryPath = directoryPath + File.separator

    + zipEntry.getName();

    System.out.println(directoryPath);

    continue;

    }

    if (zipEntry.getSize() > 0) {

    // 文件

    File targetFile = FileUtil.buildFile(directoryPath

    + File.separator + zipEntry.getName(), false);

    os = new BufferedOutputStream(new FileOutputStream(

    targetFile));

    is = zipFile.getInputStream(zipEntry);

    byte[] buffer = new byte[4096];

    int readLen = 0;

    while ((readLen = is.read(buffer, 0, 4096)) >= 0) {

    os.write(buffer, 0, readLen);

    }

    os.flush();

    os.close();

    } else {

    // 空目录

    FileUtil.buildFile(directoryPath + File.separator

    + zipEntry.getName(), true);

    }

    }

    }

    } catch (IOException ex) {

    throw ex;

    } finally {

    if(null != zipFile){

    zipFile = null;

    }

    if (null != is) {

    is.close();

    }

    if (null != os) {

    os.close();

    }

    }

    }

    public static File buildFile(String fileName, boolean isDirectory) {

    File target = new File(fileName);

    if (isDirectory) {

    target.mkdirs();

    } else {

    if (!target.getParentFile().exists()) {

    target.getParentFile().mkdirs();

    target = new File(target.getAbsolutePath());

    }

    }

    return target;

    }

    }

    调用方法

    public static void main (String [] args) throws FileNotFoundException, IOException{

    Long l = System.nanoTime();

    ZipUtil zu = new ZipUtil();

    ZipUtil.zip("E:\\1.zip", "", "F:\\外观\\");

    System.out.println(System.nanoTime() + " = " + (System.nanoTime()-l));

    }

    展开全文
  • Linux大文件传输

    2021-05-10 01:52:06
    但是如果文件,需要占用一些传输时间的时候,怎样又快又好地完成任务就很重要了。在我的测试用例中,一个最佳的方案比最差的方案,性能提高了10倍。复制文件如果我们是复制一个未压缩文件。这里走如下步骤:...

    我们经常需要在机器之间传输文件。比如备份,复制数据等等。这个是很常见,也是很简单的。用scp或者rsync就能很好的完成任务。但是如果文件很大,需要占用一些传输时间的时候,怎样又快又好地完成任务就很重要了。在我的测试用例中,一个最佳的方案比最差的方案,性能提高了10倍。

    复制文件

    如果我们是复制一个未压缩的文件。这里走如下步骤:

    压缩数据

    发送到另外一台机器上

    数据解压缩

    校验正确性

    这样做会很有效率,数据压缩后可以更有效的利用带宽

    使用ZIP+SCP

    我们可以通过ZIP+SCP的组合实现这个功能。

    gzip -c /home/yankay/data | ssh yankay01 "gunzip -c - > /home/yankay/data"

    这条命令是将/home/yankay/data经过GZIP压缩,通过ssh传输到yankay01的机器上。

    data文件的大小是1.1GB,经过Zip压缩后是183MB,执行上面的命令需要45.6s。平均吞吐量为24.7MB/s

    我们会发现Scp也有压缩功能,所以上面的语句可以写成

    scp -C -c blowfish /home/yankay/data yankay01:/home/yankay/data

    这样运行效果是相同的,不通之处在于我使用了blowfish算法作为Scp的密匙算法,使用这个算法可以比默认的情况快很多。单单对与scp,使用了blowfish 吞吐量是62MB/s,不使用只有46MB/s。

    可是我执行上面一条命令的时候,发现还是需要45s。平均吞吐量还为24MB/s。没有丝毫的提升,可见瓶颈不在网络上。

    那瓶颈在哪里呢?

    性能分析

    我们先定义几个变量

    压缩工具的压缩比是 CompressRadio

    压缩工具的压缩吞吐是CompressSpeed MB/s

    网络传输的吞吐是 NetSpeed MB/s

    由于使用了管道,管道的性能取决于管道中最慢的部分的性能,所以整体的性能是:

    $$speed=min(NetSpeed/CompressRadio,CompressSpeed)$$

    当压缩吞吐较网络传输慢的时候,压缩是瓶颈;但网络较慢的时候,网络传输/吞吐 是瓶颈。

    根据现有的测试数据(纯文本),可以得到表格:

    压缩比

    吞吐量

    千兆网卡(100MB/s)吞吐量

    千兆网卡吞吐量,基于ssh(62MB/s)

    百兆网卡(10MB/s)吞吐量

    ZLIB

    35.80%

    9.6

    9.6

    9.6

    9.6

    LZO

    54.40%

    101.7

    101.7

    101.7

    18.38235294

    LIBLZF

    54.60%

    134.3

    134.3

    113.5531136

    18.31501832

    QUICKLZ

    54.90%

    183.4

    182.1493625

    112.9326047

    18.21493625

    FASTLZ

    56.20%

    134.4

    134.4

    110.3202847

    17.79359431

    SNAPPY

    59.80%

    189

    167.2240803

    103.6789298

    16.72240803

    NONE

    100%

    300

    100

    62

    10

    可以看出来。在千兆网卡下,使用QuickLZ作为压缩算法,可以达到最高的性能。如果使用SSH作为数据传输通道,则远远没有达到网卡可以达到的最佳性能。在百兆网卡的情况下,各个算法相近。对比下来QuickLZ是有优势的。

    对于不同的数据和不同的机器,可以得出不同的最佳压缩算法。但有一点是肯定的,尽量把瓶颈压在网络上。对于较慢的网络环境,高压缩比的算法会比较有优势;相反对于较快的网络环境,低压缩比的算法会更好。

    结论

    根据上面的分析结果,我们不能是用SSH作为网络传输通道,可以使用NC这个基本网络工具,提高性能。同时使用qpress作为压缩算法。

    scp /usr/bin/qpress yankay01:/usr/bin/qpress

    ssh yankay01 "nc -l 12345 | qpress -dio > /home/yankay/data" &

    qpress -o /home/yankay/data |nc yankay01 12345

    第一行是将gpress安装到远程机器上,第二行在远程机器上使用nc监听一个端口,第三行压缩并传送数据。

    执行上面的命令需要2.8s。平均吞吐量为402MB/s,比使用Gzip+Scp快了16倍!!

    根据上文的公式,和自己的数据,可以绘出上面的表格,就可以选择出最适合的压缩算法和传输方式。达到满意的效果。如果是一个长期运行的脚本的话,这么做是值得的。

    展开全文
  • 大文件快速压缩打包

    2021-09-10 15:30:46
    大文件快速压缩打包使用 commons-compress 实现可控多线程快速压缩 使用 commons-compress 实现可控多线程快速压缩 项目中解决的问题,在此记录下来。 Java自带压缩和市面上搜到的其他方法均不能满足需求, 简单的说...
  • 使用tar pv lz4打包压缩传输,可以解决这问题,使用这个方法,等同于使用scp、rsync传输大文件。实测,使用rsync传输1200G,单个文件大小为几十KB~2GB,千兆网卡,需要同时跑6个rsync才能把带宽跑满,每个速度20MB...
  • public class ZipUtils { /** * * 文件夹压缩成ZIP * * @param srcDir 压缩文件夹路径 * @param out 压缩文件输出流 * @param keepDirStructure 是否保留原来的目录结构,true:保留目录结构; * * false:所有文件跑到...
  • 1)打包gzip filename 2)解压gzip -d filename # 打包的文件会被删除 3、bzip2 Bzip2实用程序执行更快的gzip,它压缩文件和文件夹更紧凑。压缩文件时需要更多的内存,为了减少内存消耗,在选项中通过-s标志。 1)...
  • 我使用两种方法从zip文件中读取数据,第一种的代码是从“UTF开始”到“UTF结束”,看到有人(http://www.csdn.net/develop/article/6839.shtm)介绍过这种用法,但是我用的时候,出现java.io.UTFDateFormatException...
  • 一、解压.zip的压缩文件 我有个.zip的压缩文件,需要进行解压 首先先要安装zip sudo apt install zip unzip ok,安装成功,接下来我们进行解压 unzip filename.zip 等他自己解压完,然后就会出现解压后的文件夹 ...
  • 统计(文件|压缩文件)的行数zcat file.gz | sed -n '$=' #迅速。直接打印出多少行。-n取消默认的输出,使用安静(silent)模式 '$=' 不知道是什么意思zcat file.gz |awk ‘END{print NR}’ # 迅...
  • 22 23 /** 24 * 压缩文件构造函数25 *@parampathName 压缩的文件存放目录26 */ 27 publicZipCompressor(String pathName) {28 zipFile = newFile(pathName);29 }30 31 /** 32 * 执行压缩操作33 *@paramsrcPathName ...
  • 旨在快速了解linux文档压缩与解压,如需详细理解某个命令可用man一下,或者google一下。GUN-zip(gz)压缩:gzip testfile #压缩testfile文件,生成testfile.gz解压:gunzip testfile.gz #解压testfile.gz查看:zcat ...
  • Win10系统怎么压缩和解压缩文件?win10系统中,大型游戏由于占用内存太,当我们需要把游戏移动到其他电脑上的时候我们可以先把游戏压缩一下缩小游戏的占用内存然后移动到其他电脑上解压,这样可以省下不少时间。...
  • 使用tar pv lz4打包压缩传输,可以解决这问题,使用这个方法,等同于使用scp、rsync传输大文件。实测,使用rsync传输1200G,单个文件大小为几十KB~2GB,千兆网卡,需要同时跑6个rsync才能把带宽跑满,每个速度20MB...
  • 遇到要在linux下面删除大量文件夹的情况,如:需要删除100万个文件或者文件夹。这个时候,我们本来的删除命令rm -rf * 就不好使了,因为要等待的太久。所以必须要采取一些非常手段。先安装rsync.aptitude install ...
  • 1,在Linux下需要对大量小文件进行移动或复制时,用cp、mv都会显得很没有效率,可以用tar先压缩再解压缩的方式。2,在网络环境中传输时,可以再结合nc命令,通过管道和tcp端口进行传输。nc和tar可以用来快速的在两台...
  • 在Linux上有不少用于压缩文件的命令。最新最有效的一个方法是xz,但是所有的方法都有节省磁盘空间和维护备份文件供以后使用的优点。在这篇文章中,我们将比较这些压缩命令并指出显著的不同。tartar命令不是专门的...
  • pdf压缩文件怎么压缩最小?pdf已经是网络上常用的文件格式了,尤其是日常办公当中,pdf使用怎么压缩pdf文件大小?pdf已经是网络上常用的文件格式了,尤其是日常办公当中,pdf使用次数非常多,但是有时候pdf文件的...
  • 1、zip压缩与解压缩zip是最为广泛使用的压缩程序,经它压缩的文件会产生扩展名为zip的压缩文件,而且这种格式在多种系统上可以使用,像windows中的winzip下面看一下在linux中如何建立zip文件。我们在...
  • 苹果mac电脑怎么压缩和解压文件?Mac电脑仅默认支持把文件压缩成zip格式,...转载至如何在Mac上快速压缩和解压文件?Mac上解压和压缩文件的方法-未来Mac下载​mac.orsoon.com一、解压工具1.MacOS自带的解压只能解...
  • 文章目录概述一、shell实现总结 概述 该脚本用于切割处理的文本文件,核心知识点是split函数应用...# 切割后的文件命名最后三位是从1开始的升序数字序列,而后将切割文件压缩(小于20M的不压缩) file_size=`ls -l
  • 要生成大量随机大小的文件,最简单的方法是for循环n次。例如,生成100w个0-16k大小的小文件(尝试时请改小一点数量,不然时间要很久):tmp_dir=/tmp/tempfor i in {1..1000000};dodd if=/dev/zero of=$tmp_dir/${i}....
  • 如何压缩css文件

    2021-06-12 05:17:19
    CSS代码压缩原因CSS代码压缩最主要因素是,压缩后的CSS代码所占用字节数减少(文件大小减小),如果访问量比较小的网站这点压缩后代码的优势不是很明显。但对于比较的网站,访问量网站来说节约就显得很有必要,一...
  • 默认原始文件被替换成压缩文件并以后缀名为 .gz 结尾的文件。解压缩文件使用 gunzip 命令,恢复原始文件。语法:gzip...gunzip...举例:$ gzipfile1.txtfile2.txt$ gunzipfile1.txtfile2.txt观察上图,gzip 命令压缩...
  • 我想在上传之前将视频文件上传到服务器并进行压缩 . 我正在使用ffmpeg libx264 . 我看过viber可以在一分钟内上传30秒大小为78MB的视频文件[降低到2.3MB] . 我想知道他们怎么这么快做到这一点?到目前为止我尝试过的 ...
  • 如何压缩PDF文件

    2021-05-11 09:21:10
    有些PDF文件为了更丰富地展现内容,会使用高清精美的图片或报表信息,导致PDF文件,不利于储存以及传输,这时候就需要压缩PDF工具来辅助了。本文介绍两个实用的PDF压缩方案,轻松帮你解决!在线端压缩PDF方案...
  • 什么是压缩和解压缩目录及其文件的完整过程。请提及是否必须进行任何安装。最佳解决办法你说你是新手。也许你有Windows-experiences。如果您还没有安装软件包,则需要sudo apt-get install zip gzip tar首先(或通过...
  • Java ZipFileUtil 文件压缩工具类,便于下次的敏捷、快速开发。 /** * 文件压缩工具类 */ public class ZipFileUtil { /** * 多个文件压缩 * * @param filePaths 文件列表 * @param destZip 压缩文件 例...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 233,607
精华内容 93,442
关键字:

怎么快速压缩大文件