我有一个程序,需要在其中将文件夹内容(从folder1
)复制到folder2
同一目录级别(路径)中的新文件夹()。由于无法提供相同的名称,因此我使用tmpFolder名称(用于folder2
)。完成所有逻辑后,需要压缩复制的文件夹,并给zip命名folder1.zip
,问题是当我解压缩时folder1.zip
看到folder2
。
我希望它folder1
在拉链之后。
我可以使用一些技巧吗?
另外,我知道我可以复制到不同级别(路径)的folder2中,但是我想尽可能避免复制,因为在处理大文件夹内容时副本可能非常昂贵。
我使用以下代码压缩文件夹:
func Zipit(source, target string) error {
zipfile, err := os.Create(target)
if err != nil {
return err
}
defer zipfile.Close()
archive := zip.NewWriter(zipfile)
defer archive.Close()
info, err := os.Stat(source)
if err != nil {
return nil
}
var baseDir string
if info.IsDir() {
baseDir = filepath.Base(source)
}
filepath.Walk(source, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
header, err := zip.FileInfoHeader(info)
if err != nil {
return err
}
if baseDir != "" {
header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
}
if info.IsDir() {
header.Name += "/"
} else {
header.Method = zip.Deflate
}
writer, err := archive.CreateHeader(header)
if err != nil {
return err
}
if info.IsDir() {
return nil
}
file, err := os.Open(path)
if err != nil {
return err
}
defer file.Close()
_, err = io.Copy(writer, file)
return err
})
return err
}
zip存档中文件和目录的名称来自zip.FileHeader。
您的代码已经初始化了os.FileInfo的标头。这很重要,因为它会填充诸如时间戳和未压缩大小的元数据。
此外,您的代码似乎正在html" target="_blank">执行以下操作:
如果通过以下方式调用:
Zipit("/path/to/folder2/", "/path/to/folder1.zip")
在遍历目录树之前,它将计算基本目录:
baseDir = filepath.Base(source)
// baseDir is "folder2"
然后,对于每个文件,存档内的路径设置为:
header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
这样会将文件名/path/to/folder2/otherdir/myfile
转换为folder2/otherdir/myfile
。
如果要更改存储在存档中的目录名称,只需更改baseDir
为所需的名称。
我建议以下解决方案:
将功能签名更改为:
func Zipit(source, target, newBaseName string) error {
将basedir更改为:
if newBaseName != "" {
baseDir = newBaseName
else if info.IsDir() {
baseDir = filepath.Base(source)
}
然后使用以下命令调用函数:
Zipit("/path/to/folder2/", "/path/to/folder1.zip", "folder1")
这应导致将存档解压缩到中folder1/
。
由来 在Java中,对文件、文件夹打包,压缩是一件比较繁琐的事情,我们常常引入Zip4j进行此类操作。但是很多时候,JDK中的zip包就可满足我们大部分需求。ZipUtil就是针对java.util.zip做工具化封装,使压缩解压操作可以一个方法搞定,并且自动处理文件和目录的问题,不再需要用户判断,压缩后的文件也会自动创建文件,自动创建父目录,大大简化的压缩解压的复杂度。 方法 Zip 压缩 Zi
问题内容: 是否有任何命令行脚本和/或在线工具可以逆转缩小效果,类似于Tidy可以清除可怕的HTML? (我特别希望缩小压缩的JavaScript文件的大小,因此变量重命名可能仍然是一个问题。) 问题答案: 您可以使用此方法: 但这取决于您使用的minify方法,该方法仅格式化代码,不更改变量名,也不解压缩base62编码。 编辑:实际上,它可以解压缩“打包的”脚本(与Dean Edward的打包
本文向大家介绍Java实现的zip压缩及解压缩工具类示例,包括了Java实现的zip压缩及解压缩工具类示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java实现的zip压缩及解压缩工具类。分享给大家供大家参考,具体如下: 更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《J
本文向大家介绍Android Zip解压缩工具类分享,包括了Android Zip解压缩工具类分享的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android Zip解压缩工具类的具体代码,供大家参考,具体内容如下 添加权限 在具体的场景中测试一下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
又一款与PHP解压缩相匹配的打包(压缩)工具,其特点是可以在远程服务器上方便、快速的压缩文件,并且提供下载链接,方便下载,是网站备份的好工具。其他用途有待开发!(声明:此程序为开源程序,本人只是对其二次修改,不存在版权问题,可随意下载、转载) 使用方法: 下载到本地之后,上传PHPZip.php文件到你的服务器上,对其进行访问。 默认密码:xibo123 修改密码方法:在地址栏访问你服务器上PHP
所以我的问题是,当我用profile只运行applicaiton时,Spring是否合并了这两个profile,并且我可以在应用程序中看到和?