- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
对于我正在编写的程序的一部分,我有一个函数可以解压缩 tarball 并返回其内容列表。
除提取的文件为空外,一切似乎都正常。我可以将文件内容提取到 stdout 并看到它确实提供了正确的内容,只是不确定为什么它不写入文件。
函数:
func UnpackTarball(filename, extractpath string) ([]string, error) {
buf, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
}
if err = os.MkdirAll(extractpath, os.ModeDir|0755); err != nil {
return nil, err
}
tarball := tar.NewReader(bytes.NewReader(buf))
contentlist := make([]string, 0, 500)
// Iterate through the files in the archive
for {
hdr, err := tarball.Next()
if err == io.EOF {
// end of tar archive
break
}
if err != nil {
return nil, err
}
info := hdr.FileInfo()
entry := path.Join(extractpath, hdr.Name)
// Is entry a directory?
if info.IsDir() {
if err = os.MkdirAll(entry, os.ModeDir|0755); err != nil {
return nil, err
}
continue
}
// Append entry to the content list
contentlist = append(contentlist, hdr.Name)
// Create file
f, err := os.Create(entry)
if err != nil {
return nil, err
}
defer f.Close()
_, err = io.Copy(bufio.NewWriter(f), tarball)
//_, err = io.Copy(os.Stdout, tarball)
if err != nil {
return nil, err
}
}
return contentlist, nil
}
感谢您的帮助。
最佳答案
您没有刷新缓冲写入器的内容,因此如果文件足够小,您就不会写入任何内容。在 io.Copy()
调用之后的某处调用 bufio.(*Writer).Flush()
。
此外,您可能希望在循环中关闭输出文件,而不是推迟到所有文件都已写入。
关于go - 在 Go 中解压压缩包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26691458/
我的代码中有以下两种方法。现在,我可以根据以下代码从 URL 读取 JSON。但是,我应该如何修改代码以便获得 gzip 文件,然后将其解码为 JSON? private static String
当我尝试使用 compc 构建 .swc 时,我得到了 Error: could not find a JVM。 我找到了 this站点,然后注释掉 java.home 行。那没有帮助。 我正在尝试从
1、此方法可以下载图片、压缩包、pdf(亲测),应该所有类型的文件都可以下载到本地,可以试一下 ?
我遇到了两个关于 zip 存档的问题,我想在这里分享并请求您的经验: 目录重复如果我在存档中创建两个或多个同名目录(在根目录下),存档包含两个目录(在查看条目时),但每个 ZIP 应用程序(也包括 W
我正在尝试将两个网络请求与 zip 函数结合起来。这两个请求依赖于另一个请求 (getInfoA)。 这是我正在使用的代码: IoC.networkProcessService.getInfoA(wi
我有我下载的文件: 2MGF&DPNA.part1.rar 2MGF&DPNA.part2.rar 2MGF&DPNA.part3.rar 2MGF&DPNA.part4.rar 2MGF&DPNA.
我需要使用 SharpCompress 将文件压缩为 7zip:http://sharpcompress.codeplex.com 我做了如下: using (var archive = ZipArc
.NET ZipArchive 是否允许重命名或移动条目?目前无法更改 ZipArchiveEntry 创建后的名称。看来我必须将原始 ZipArchiveEntry 的流复制到名称更改后的新 Zip
我是第一次尝试 Webpack。我已经将 Gulp 与 Browserify 一起使用了一段时间,并且对它非常满意。在这一点上,我只是在测试几个 Webpack 插件。即 compression-we
我正在尝试找出解决问题的方法;事实上,我正在编写自己的工具,使用 C++ 中的 libzip 来压缩文件来进行保存。 绝对没有完成,但我想做一些测试,然后我做了并从日志中获得了一个“有趣”的错误。 这
目录结构如下 Test app libs commons-codec.jar guava-r09.jar
我创建了一个简单的备份脚本,它只备份某些文件和文件夹。 tar -zcf $DIRECTORY/var.www.tar.gz /var/www tar -zcf $DIRECTORY/developm
我正在使用 Rails 5.2 和 ActiveStorage 让我的用户在我的应用程序中上传文件。我将所有上传的文件显示在一个表格中,我可以选择要下载的文件。选择后,我将能够将它们全部下载到一个 z
我正在使用 Rails 5.2 和 ActiveStorage 让我的用户在我的应用程序中上传文件。我将所有上传的文件显示在一个表格中,我可以选择要下载的文件。选择后,我将能够将它们全部下载到一个 z
我是一名优秀的程序员,十分优秀!