精华内容
下载资源
问答
  • 压缩文件中的上级目录
    2021-03-05 11:54:44

    例如,我要压缩存储在/Users/me/Desktop/image.jpg中的文件

    我做了这个方法:

    public static Boolean generateZipFile(ArrayList sourcesFilenames, String destinationDir, String zipFilename){

    // Create a buffer for reading the files

    byte[] buf = new byte[1024];

    try {

    // VER SI HAY QUE CREAR EL ROOT PATH

    boolean result = (new File(destinationDir)).mkdirs();

    String zipFullFilename = destinationDir + "/" + zipFilename ;

    System.out.println(result);

    // Create the ZIP file

    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFullFilename));

    // Compress the files

    for (String filename: sourcesFilenames) {

    FileInputStream in = new FileInputStream(filename);

    // Add ZIP entry to output stream.

    out.putNextEntry(new ZipEntry(filename));

    // Transfer bytes from the file to the ZIP file

    int len;

    while ((len = in.read(buf)) > 0) {

    out.write(buf, 0, len);

    }

    // Complete the entry

    out.closeEntry();

    in.close();

    } // Complete the ZIP file

    out.close();

    return true;

    } catch (IOException e) {

    return false;

    }

    }

    但是,当我提取文件时,解压缩的文件具有完整路径。

    我不希望zip中每个文件的完整路径,而只想要文件名。

    我该怎么做?

    更多相关内容
  • 该文章由修改而来实现:可以遍历上级目录,遍历二级三级目录压缩指定文件或文件夹到指定文件夹。压缩20多M的文件下载正常,压缩70多M的文件,下载出错,具体原因不知,大文件可以注释下载代码,改为ftp下载list....

    该文章由

    修改而来

    实现:

    可以遍历上级目录,遍历二级三级目录,压缩指定文件或文件夹到指定文件夹。

    压缩20多M的文件下载正常,压缩70多M的文件,下载出错,具体原因不知,大文件可以注释下载代码,改为ftp下载

    list.php文件代码:

    header("Content-type:text/html;charset=utf8");

    require('./getfile.php');

    $path = isset($_GET['path']) ? $_GET['path'] : '../..'; //遍历目录

    $zippath = '../../backup/'; //压缩文件保存目录

    $scandir=new traverseDir();

    //$scandir->scandir($scandir->currentdir);

    $scandir->scandir($path);

    $scandir->currentdir;

    if (isset($_POST['down_load'])){

    $items=$_POST['items'];

    $scandir->tozip($items,$path,$zippath);//将文件压缩成zip格式

    }

    //echo "当前的工作目录:".$scandir->currentdir;

    echo "当前目录:".$path;

    if($path != '..'){

    echo '上级目录';

    }

    echo "
    当前目录下的所有文件";

    ?>

    名称大小(KB)

    $res=$scandir->fileinfo;

    foreach ($res as $k=>$v){

    if (!($k=='.' || $k=='..')) {//过滤掉.和..

    ?>

    if($v['type'] == 1){

    echo '文件夹:' . $k . '';

    }else{

    echo $k;

    }

    ?>

    echo number_format($v[0],0);

    ?>

    }

    }

    ?>

    全选

    $("#selall").click(function(){

    var xz = $(this).prop("checked");//判断全选按钮的选中状态

    var ck = $(".filename").prop("checked",xz); //让class名为qx的选项的选中状态和全选按钮的选中状态一致。

    });

    getfile.php文件代码:

    require'./download.php';

    /**

    * 遍历目录,打包成zip格式

    */

    class traverseDir{

    public $currentdir;//当前目录

    public $filename;//文件名

    public $fileinfo;//用于保存当前目录下的所有文件名和目录名以及文件大小

    public function __construct(){

    $this->currentdir=getcwd();//返回当前目录

    }

    //遍历目录

    public function scandir($filepath){

    if (is_dir($filepath)){

    $arr=scandir($filepath);

    foreach ($arr as $k=>$v){

    $v2=iconv("gb2312","utf-8",$v); // 文件或目录为中文,显示乱码,因为页面是utf-8编码,从windows获得的文件名称是gb2312编码,所以要把文件名gb2312转出utf-8编码,输出到页面。但是getfilesize($v)也用到文件名获取文件大小,如果转成utf-8编码后,就找不到文件了,所以getfilesize($v)用的还是原来的gb2312编码,这也是上面变量命名为$v2的原因。关联本页面72行

    $filepath_new = $filepath . '/' . $v;

    if(!is_dir($filepath_new)){

    $this->fileinfo[$v2][]=$this->getfilesize($filepath_new);

    $this->fileinfo[$v2]['type'] = 0;

    $this->fileinfo[$v2]['path'] = $filepath_new;

    }else{

    $this->fileinfo[$v2][]=0;

    $this->fileinfo[$v2]['type'] = 1;

    $this->fileinfo[$v2]['path'] = $filepath_new;

    }

    }

    }else {

    echo "";

    }

    }

    /**

    * 返回文件的大小

    * @param string $filename 文件名

    * @return 文件大小(KB)

    */

    public function getfilesize($fname){

    return filesize($fname)/1024;

    }

    /**

    * 压缩目录

    */

    public function addFileToZip($path, $zip) {

    // 判断是文件还是目录,区别对待

    if(is_dir($path)){

    $handler = opendir($path); //打开当前文件夹由$path指定。

    while (($filename = readdir($handler)) !== false) {

    if ($filename != "." && $filename != "..") { // 文件夹文件名字为'.'和‘..’,不要对他们进行操作

    if (is_dir($path . "/" . $filename)) { // 如果读取的某个对象是文件夹,则递归

    $this->addFileToZip($path . "/" . $filename, $zip);

    } else { // 将文件加入zip对象

    $zip->addFile($path . "/" . $filename);

    }

    }

    }

    @closedir($path);

    }else{

    $zip->addFile($path);

    }

    }

    /**

    * 压缩文件(zip格式)

    */

    public function tozip($items,$path,$zippath){

    $zip=new ZipArchive();

    $zipname = date('YmdHis',time()).'.zip';

    if (!file_exists($zippath.$zipname)){

    $zip->open($zippath.$zipname,ZipArchive::CREATE | ZipArchive::OVERWRITE);//创建一个空的zip文件

    for ($i=0;$i

    $v2=iconv("utf-8","gb2312",$items[$i]); // 由于遍历目录的时候,把文件夹名称转换成utf-8输出到页面的,所以通过表单提交的文件名是utf-8编码的,而utf-8编码的文件名在windows中是找不到对于文件的,所以要把文件名转换成gb2312编码。关联本页面17行

    $this->addFileToZip($path.'/'.$v2, $zip);

    }

    $zip->close();

    //压缩20多M的文件下载正常,压缩70多M的文件,下载出错,具体原因不知,大文件可以注释下载代码,改为ftp下载

    $dw=new download($zipname,$zippath); //下载文件

    $dw->getfiles();

    //echo "";

    }

    }

    }

    ?>

    download.php文件代码:

    /**

    * 下载文件

    */

    class download{

    protected $_filename;

    protected $_filepath;

    protected $_filesize;//文件大小

    public function __construct($filename,$filepath){

    $this->_filename=$filename;

    $this->_filepath=dirname(__FILE__).'/'.$filepath.$filename;

    }

    //获取文件名

    public function getfilename(){

    return $this->_filename;

    }

    //获取文件路径(包含文件名)

    public function getfilepath(){

    return $this->_filepath;

    }

    //获取文件大小

    public function getfilesize(){

    return $this->_filesize=number_format(filesize($this->_filepath)/(1024*1024),2);//去小数点后两位

    }

    //下载文件的功能

    public function getfiles(){

    //检查文件是否存在

    if (file_exists($this->_filepath)){

    //打开文件

    $file = fopen($this->_filepath,"r");

    //返回的文件类型

    Header("Content-type: application/octet-stream");

    //按照字节大小返回

    Header("Accept-Ranges: bytes");

    //返回文件的大小

    Header("Accept-Length: ".filesize($this->_filepath));

    //这里对客户端的弹出对话框,对应的文件名

    Header("Content-Disposition: attachment; filename=".$this->_filename);

    //修改之前,一次性将数据传输给客户端

    echo fread($file, filesize($this->_filepath));

    //修改之后,一次只传输1024个字节的数据给客户端

    //向客户端回送数据

    $buffer=1024;//

    //判断文件是否读完

    while (!feof($file)) {

    //将文件读入内存

    $file_data=fread($file,$buffer);

    //每次向客户端回送1024个字节的数据

    echo $file_data;

    }

    fclose($file);

    }else {

    echo "";

    }

    }

    }

    ?>

    展开全文
  • 本文实例讲述了Python实现多级目录压缩与解压文件的方法。分享给大家供大家参考,具体如下:咱向来就是拿来主意,也发个东西供同行“拿来”使用吧咱信奉的就是少量的代码完成大量的工作,虽然代码不多,但还是要用...

    本文实例讲述了Python实现多级目录压缩与解压文件的方法。分享给大家供大家参考,具体如下:

    咱向来就是拿来主意,也发个东西供同行“拿来”使用吧

    咱信奉的就是少量的代码完成大量的工作,虽然代码不多,但还是要用大脑的。发出来供大家参考

    功能:

    支持中文路径,支持多级目录

    支持跨平台,在linux和window下都可直接使用

    压缩的多态性

    压缩包不带级父文件夹目录压缩

    压缩包带父级文件夹目录

    不指定目标文件与路径压缩

    指定压缩包名称不指定路径压缩

    还是看代码吧

    #coding:utf-8

    #压缩解压文件模块

    #支持中文路径,支持多级目录

    #支持跨平台,在linux和window下都可直接使用

    #python 2.7.2

    #author:xieShuxu

    #QQ:258356793

    #Email:sondx@qq.com

    import zipfile,os

    class ZipException(Exception):

    pass

    def unZipFile(zipPath,unZipPath=''):

    '''解压文件

    zipPath 要解压的文件路径

    unZipPath 解压目标路径 默认解压到zipPath所在目录

    '''

    try:

    filePath=filePath.decode('utf-8');

    zipFilePath=zipFilePath.decode('utf-8');

    except:

    print '================'

    if not os.path.exists(zipPath):

    raise ZipException,'function unZipFile:not exists file or dir(%s)' %zipPath;

    if unZipPath=='':

    unZipPath=os.path.splitext(zipPath)[0];

    if not unZipPath.endswith(os.sep):

    unZipPath+=os.sep;

    z = zipfile.ZipFile(zipPath, 'r')

    #zipInfolist=z.namelist();

    for k in z.infolist():

    savePath=unZipPath+k.filename;

    saveDir=os.path.dirname(savePath);

    if not os.path.exists(saveDir):

    os.makedirs(saveDir);

    f=open(savePath,'wb');

    f.write(z.read(k));

    f.close();

    z.close();

    #print unZipPath

    global _iterateExeZipFile;

    def exeZipFile(filePath,zipFilePath=''):

    '''压缩文件

    filePath 要解压的文件路径 可以是文件或者目录

    os.sep结尾表示压缩该目录下的子文件和文件夹 不包含该文件夹,否则包含该文件夹压缩

    ZipFilePath 压缩包文件路径

    也可只传文件名

    默认压缩到filePath的父级目录下

    '''

    filePath=filePath.decode('utf-8');

    zipFilePath=zipFilePath.decode('utf-8');

    #压缩文件不存在直接返回

    if not os.path.exists(filePath):

    raise ZipException,'function exeZipFile:not exists file or dir(%s)' %filePath;

    # 是否包含父级目录压缩

    hasPDir=not filePath.endswith(os.sep);

    if not hasPDir:

    filePath=os.path.dirname(filePath);

    print filePath

    #校验备份文件路径

    if zipFilePath=='':

    zipFilePath=os.path.splitext(filePath)[0]+'.zip';

    elif zipFilePath.find(os.sep)==-1:#只传文件名的处理

    zipFilePath=os.path.dirname(filePath)+os.sep+zipFilePath;

    #校验创建备份路径目录

    if not os.path.exists(os.path.dirname(zipFilePath)):

    os.makedirs(os.path.dirname(zipFilePath));

    #初始化压缩包中的根目录

    zipRoot='';

    if hasPDir:

    zipRoot=os.path.split(filePath)[1];

    #开始压缩

    z = zipfile.ZipFile(zipFilePath, 'w')

    if os.path.isfile(filePath):

    z.write(filePath,os.path.split(filePath)[1]);

    else:

    _iterateExeZipFile(filePath,zipRoot,z);

    z.close();

    def _iterateExeZipFile(dirPath,zipRoot,z):

    压缩使用的例子:

    if __name__=='__main__':

    #压缩包不带级父文件夹目录

    testdir='D:\codeSource\linuxAgent\'

    zipFilePath='D:\codeSource\压缩包不带父级目录.zip'

    exeZipFile(testdir,zipFilePath);

    #压缩包带父级文件夹目录

    testdir='D:\codeSource\linuxAgent'#不带后缀斜线

    zipFilePath='D:\codeSource\压缩包带父级目录.zip'

    exeZipFile(testdir,zipFilePath);

    #不指定目标文件与路径压缩

    testdir='D:\codeSource\linuxAgent'

    exeZipFile(testdir);

    #指定压缩包名称不指定路径压缩

    testdir='D:\codeSource\linuxAgent\'

    exeZipFile(testdir,'仅指定名称压缩包.zip');

    解压的例子:

    #指定解压目录解压文件

    testdir=u'D:\codeSource\仅指定名称压缩包\'

    zipFilePath=u'D:\codeSource\仅指定名称压缩包.zip'

    unZipFile(zipFilePath,testdir);

    #不指定目录解压

    zipFilePath=u'D:\codeSource\仅指定名称压缩包.zip'

    unZipFile(zipFilePath);

    好了!就这么多,如果你觉得有用就顶一下吧。有问题也可以联系我

    希望本文所述对大家Python程序设计有所帮助。

    展开全文
  • zip 类型的压缩包文件中允许存在 ../ 类型的字符串,用于表示上一层级的目录。攻击者可以利用这一特性,通过精心构造 zip 文件,利用多个 ../ 从而改变 zip 包中某个文件的存放位置,达到替换掉原有文件的目的。 ...

    漏洞简述

    zip 类型的压缩包文件中允许存在 ../ 类型的字符串,用于表示上一层级的目录。攻击者可以利用这一特性,通过精心构造 zip 文件,利用多个 ../ 从而改变 zip 包中某个文件的存放位置,达到替换掉原有文件的目的。

    那么,如果被替换掉的文件是是 .so、.dex 或 .odex 类型文件,那么攻击者就可以轻易更改原有的代码逻辑,轻则产生本地拒绝服务漏洞,影响应用的可用性,重则可能造成任意代码执行漏洞,危害应用用户的设备安全和信息安全。比如寄生兽漏洞、海豚浏览器远程命令执行漏洞和三星默认输入法远程代码执行等著名的安全事件。

    漏洞原理

    在 Linux/Unix 系统中 ../ 代表的是向上级目录跳转,有些程序在当前工作目录中处理到诸如用“../../../../../../../../../../../etc/hosts”表示的文件,会跳转出当前工作目录,跳转到到其他目录中。

    Java 代码在解压 ZIP 文件时,会使用到 ZipEntry 类的 getName() 方法,如果 ZIP 文件中包含 “../” 的字符串,该方法返回值里面原样返回,如果没有过滤掉 getName() 返回值中的 “../” 字符串,继续解压缩操作,就会在其他目录中创建解压的文件。

    漏洞实例

    来通过一个实例代码演示上述漏洞,编写 APP,主活动类的代码如下:

    public class MainActivity extends AppCompatActivity {
        public static String TAG = "MainActivity";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button button_Activity1=(Button) findViewById(R.id.button);
            button_Activity1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String zipPtath = getApplicationContext().getCacheDir()+"/test.zip";//压缩包路径
                    String unzipPath = getApplicationContext().getCacheDir().toString();//解压路径
                    try {
                        unzipFile(zipPtath,unzipPath);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    
    
        public void unzipFile(String zipPtath, String outputDirectory)throws IOException {
            /**
             * 解压assets的zip压缩文件到指定目录
             * @param context上下文对象
             * @param assetName压缩文件名
             * @param outputDirectory输出目录
             * @param isReWrite是否覆盖
             * @throws IOException
             */
            Log.i(TAG,"开始解压的文件: "  + zipPtath + "\n" + "解压的目标路径:" + outputDirectory );
            // 创建解压目标目录
            File file = new File(outputDirectory);
            // 如果目标目录不存在,则创建
            if (!file.exists()) {
                file.mkdirs();
            }
            // 打开压缩文件
            InputStream inputStream = new FileInputStream(zipPtath); ;
            ZipInputStream zipInputStream = new ZipInputStream(inputStream);
            // 读取一个进入点
            ZipEntry zipEntry = zipInputStream.getNextEntry();
            // 使用1Mbuffer
            byte[] buffer = new byte[1024 * 1024];
            // 解压时字节计数
            int count = 0;
            // 如果进入点为空说明已经遍历完所有压缩包中文件和目录
            while (zipEntry != null) {
                Log.i(TAG,"解压文件 入口 1: " +zipEntry );
                if (!zipEntry.isDirectory()) {  //如果是一个文件
                    // 如果是文件
                    String fileName = zipEntry.getName();
                    //Log.i(TAG,"解压文件 原来 文件的位置: " + fileName);
                    //fileName = fileName.substring(fileName.lastIndexOf("/") + 1);  //截取文件的名字 去掉原文件夹名字
                    Log.i(TAG,"解压文件 的名字: " + fileName);
                    file = new File(outputDirectory + File.separator + fileName);  //放到新的解压的文件路径
                    file.createNewFile();
                    FileOutputStream fileOutputStream = new FileOutputStream(file);
                    while ((count = zipInputStream.read(buffer)) > 0) {
                        fileOutputStream.write(buffer, 0, count);
                    }
                    fileOutputStream.close();
                }
                // 定位到下一个文件入口
                zipEntry = zipInputStream.getNextEntry();
                Log.i(TAG,"解压文件 入口 2: " + zipEntry );
            }
            zipInputStream.close();
            Log.i(TAG,"解压完成");
        }
    }
    

    正常压缩包

    本地压缩一个正常的 zip 文件,包含 test.txt 文件:
    在这里插入图片描述
    将其 push 到 /data/user/0/com.bwshen.test/cache 目录下:
    在这里插入图片描述
    运行 APP 程序对其进行解压缩,log 如下:
    在这里插入图片描述
    查看文件解压缩结果,程序可正常完成解压缩任务:
    在这里插入图片描述
    Ok,至此一切正常。下面来看看如果 ZIP 压缩包里面包含异常文件名的文件的话会是什么结果。

    恶意压缩包

    使用如下 Python 代码生成一个包含 …/test.txt 文件的压缩文件 test.zip:

    import zipfile
    
    def zip():
        try:
            with open("test.txt", "r") as f:
                binary = f.read()
                zipFile = zipfile.ZipFile("test.zip", "a", zipfile.ZIP_DEFLATED)
                info = zipfile.ZipInfo("test.zip")
                //zipFile.writestr("../../../../../data/data/com.test.demo/files/test.txt", binary)
                zipFile.writestr("../test.txt", binary)
                zipFile.close()
        except IOError as e:
            raise e
    
    if __name__ == '__main__':
        zip()
    

    生成的 test.zip 里的文件如下:
    在这里插入图片描述
    将其 push 到 /data/user/0/com.bwshen.test/cache 目录下:
    在这里插入图片描述
    运行 APP 程序对其进行解压缩,log 如下:
    在这里插入图片描述
    查看文件最终解压缩后的路径,发现成功解压缩并穿越到上级目录:
    在这里插入图片描述
    此处只是演示了穿越到上级目录,攻击者完全可以将文件穿越、解压缩到应用程序的其他私有路径下。

    历史漏洞

    以海豚浏览器远程代码执行漏洞为例。

    任意命令执行

    海豚浏览器的主题设置中允许用户通过网络下载新的主题进行更换,主题文件其实是一个 ZIP 压缩文件。通过中间人攻击的方法可以替换掉这个 ZIP 文件。替换后的 ZIP 文件中有重新编译过的 libdolphin.so。此 so 文件重写了 JNI_OnLoad() 函数:
    在这里插入图片描述
    此 so 文件以“../../../../../../../../../../data/data/mobi.mgeek.TunnyBrowser/files/libdolphin.so”的形式存在恶意 ZIP 文件中。海豚浏览器解压恶意 ZIP 文件后,重新的 libdolphin.so 就会覆盖掉原有的 so 文件,重新运行海豚浏览器会弹出 Toast 提示框:
    在这里插入图片描述
    能弹出Toast说明也就可以执行其他代码。

    问题根因分析

    这里分析下此漏洞产生的原因是:

    1、主题文件其实是一个 ZIP 压缩包,从服务器下载后进行解压,但是解压时没有过滤 getName() 返回的字符串中是否有“../”:
    在这里插入图片描述
    2、动态链接库文件 libdolphin.so,并没有放在应用数据的 lib 目录下,而是放在了 files 目录中:
    在这里插入图片描述
    加载使用的地方是 com.dolphin.browser.search.redirect 包中的 SearchRedirector:
    在这里插入图片描述
    应用使用的是 System.load() 来加载 libdolphin.so 而非 System.loadLibrary(),在 Android 中,System.loadLibrary() 是从应用的 lib 目录中加载 .so 文件,而 System.load() 是用某个 .so 文件的绝对路径加载,这个 .so 文件可以不在应用的 lib 目录中,可以在 SD 卡中,或者在应用的 files 目录中,只要应用有读的权限目录中即可。

    在 files 目录中,应用具有写入权限,通过网络中间人攻击,同时利用 ZIP 文件目录遍历漏洞,替换掉文件 libdolphin.so,达到远程命令执行的目的。

    【注意】应用的 lib 目录是软链接到了 /data/app-lib/ 应用目录,如果 libdolphin.so 文件在 lib 目录下就不会被覆盖了,第三方应用在执行时没有写入 /data/app-lib 目录的权限:
    在这里插入图片描述

    漏洞防御

    针对上述 ZIP 文件解压缩的目录穿越导致文件覆盖漏洞,修复建议如下:

    1. 对重要的 ZIP 压缩包文件进行数字签名校验,校验通过才进行解压。
    2. 检查 Zip 压缩包中使用 ZipEntry.getName() 获取的文件名中是否包含 ../ 或者 ..,检查 ../ 的时候不必进行 URI Decode(以防通过URI编码 ..%2F 来进行绕过),测试发现 ZipEntry.getName() 对于 Zip 包中有 ..%2F 的文件路径不会进行处理。

    具体做法可以在使用 java.util.zip 包中 ZipInputStream 类的进行解压操作时进行检查,示例如下:
    在这里插入图片描述
    Google 建议的修复方案:

    InputStream is = new InputStream(untrustedFileName);
    ZipInputStream zis = new ZipInputStream(new BufferedInputStream(is));
    while((ZipEntry ze = zis.getNextEntry()) != null) {
      File f = new File(DIR, ze.getName());
      String canonicalPath = f.getCanonicalPath();
      if (!canonicalPath.startsWith(DIR)) {
        // SecurityException
      }
      // Finish unzipping…
    }
    
    展开全文
  • 假设我们有个目录叫 dev,dev有很多文件,我们想要将dev文件打包,名字可能叫dev.zip,但当我们解压的时候,不想要解压生成一个dev目录,想要直接解压在当前目录,这样如何压缩呢? # 进入dev目录 $ cd dev $ ...
  • 这样可以解决因目录名过长解压不下来问题 使用工具:WinRAR 7_zip 等都可以 cmd命令执行 可用python等调用cmd实现项目上应用 在这里使用python和WinRAR解压 把WinRAR 添加到环境变量 cmd执行解压操作 ...
  • tar命令解压缩,去掉顶级目录 可以理解为,将压缩包内文件解压出来后,散落一地的感觉 在tar 命令后加上: --strip-components 1 例如,解压tomcat 正常情况,解压后会出现apache-tomcat-9.0.37文件夹: [root@...
  • 支持压缩单个文件和多级文件夹使用方法zip_compress(to_zip,save_zip_name):#to_zip表示源文件或者源目录,save_zip_name表示目的zip文件(可带目录)思路:先判断目的文件目录是否存在,如果不存在,就创建;...
  • Linux(CentOS)下目录档案管理以及档案文件系统打包压缩一、目录档案的管理1、操作目录的常用命令:(1)、绝对路径与相对路径:绝对路径都是从根目录开始写法为: /usr/local/java ("/"为根目录,也是目录的入口)相对...
  • 【nodeJS】文件压缩

    2021-07-05 00:43:39
    } 代码没有指定解压的目标路径,如果按照上文压缩方式,数据解压后会被放入"./zipin/"目录下。 ------------解压无密码文件 var compressing=require("compressing") compressing.zip.uncompress('a2.zip', '...
  • 转自... zip命令压缩时排除隐藏文件和隐藏目录及指定目录 zip -r epp_data_center.zip epp_data_center -x "./epp_data_center/doc*" -x "*/\.*" -x "\.*" # -x "*/\.*" -x "\.*" -...
  • Java实现压缩文件与解压缩zip文件

    千次阅读 2022-04-07 22:43:55
    在日常的使用经常会使用到像WinRAR或WinZIP这样的压缩文件,通过这些软件可以把一个很大的文件进行压缩以方便传输。 在JAVA 为了减少传输时的数据量也提供了专门的压缩流,可以将文件或文件夹压缩成ZIP、JAR、...
  • path="/home/web/yy/" # 固定日志文件路径 f=`ls $path*.log $path*.err -1 -c` # 拿到路径底下的.log和.err文件 mkdir backup # 创建 backup 文件夹 cd backup # 进入 backup 文件夹 d2=`date -d "3 days ago" +%Y%...
  • java实现文件压缩

    2021-03-15 17:40:33
    java实现文件压缩:主要是流与流之间的传递代码如下:package com.cst.klocwork.service.zip;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;...
  • Java对文件/文件夹进行压缩或解压缩

    千次阅读 2022-05-27 10:20:12
    将文件夹的文件夹压缩,解压缩压缩指定目录下的文件/文件夹将压缩包解压到指定目录 /** * 压缩工具类 */ @Slf4j public class ZipUtils { private static final String DEFAULT_CHARSET = "UTF-8"; private ...
  • public void MuliteImport() { string filePath = @"D:\Program Files\1.rar";... //解压目录 string virtualPath = string.Format("{0}/{1}", "Decompress", DateTime.Now.ToString("yyyyMMdd")); string F...
  • Windows BAT7zip压缩时排除某些目录

    千次阅读 2019-12-17 15:35:23
    具体命令是: "C:\Program Files\7-Zip\7z.exe" a -t7z 文件名.7z 目录 -xr!.svn
  • Java文件压缩与解压设计与实现1 实验分析说明2.基础知识3结构分析4.GUI界面展示5.代码具体实现5.1display类5.2zip压缩主函数5.3FileZip 实现.zip压缩与解压 1 实验分析说明 一、文件压缩,是很有必要的,我们在...
  • linux tar解压文件至指定目录,不包含原目录
  • Java实现zip文件压缩与解压缩--附完整代码

    万次阅读 多人点赞 2019-07-26 14:54:09
    Java实现文件压缩与解压缩-----zip、.7z1. 基本概念1.1 Java实现zip的压缩与解压缩1.1.1 基本概念1.1.2 zip压缩代码实现1.3 zip压缩代码改进 1. 基本概念 1.1 Java实现zip的压缩与解压缩 1.1.1 基本概念 ...
  • 在当前目录创建一个名为aa.txt的文件 touch aa.txt 在当前目录批量创建10个文件,touch {1..10}.text 6.2 rename修改文件名 rename命令用字符串替换的方式修改文件名,可以用来批量修改,语法为renam...
  • 压缩文件: ZipOutputStream 常用方法 方法名 介绍 ZipOutputStream(OutputStream out) 构造方法:创建新的ZIP输出流 public void putNextEntry(ZipEntry e) 开始编写新的ZIP文件条目,并将流定位到条目...
  • Java进行文件压缩

    2021-12-13 10:46:21
    文件压缩 运用ZipOutputStream进行文件压缩 public static void zipFile(String sourcePath, String fromat) throw Exception{ File file = new File(sourcePath); if (!... // 压缩在同级目录下 F
  • 本例用来简单实现windows平台下如何将一个目录下的文件压缩到指定的zip文件中,亦或是将一个zip文件的内容解压缩到某个目录。 以下是源码,代码的注释解释了相关操作,一看就懂。 注: 本例将这两个功能封装在了一...
  • 4. 请不要备份jar文件所在的任意上级目录! 5. FileBackupToZip需传入目标文件夹地址 6. FileBackupToZip会自动删除超过7天的备份文件,请勿在同文件夹下放置yyyyMMddHHmmss格式的.zip文件。(第1条的解释) 7. ...
  • 我这里包装了一个函数,传入数组,即可打包,数组的定义方式为:对于数组的每一个元素,当元素为数组时,键名为目录,否则就是将所有的字符串当做相对路径,将文件添加到压缩包的当前路径下,代码贴出来,附件有可...
  • 在打包时如果源文件包含绝对路径,打包的文件重新解压也会包含有目录信息,所以如果不需要目录信息需要...命令结构为:打包命令+空格+压缩文件存放目录及名称+空格+"-C"+源文件目录+空格+文件名称 使用时命令需...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,778
精华内容 7,111
热门标签
关键字:

压缩文件中的上级目录

友情链接: Shapes.rar