压缩文件夹最终会出错,具体取决于1个文件

如何解决压缩文件夹最终会出错,具体取决于1个文件

我有一个可以压缩包含LibreOffice Data的文件夹的功能。 (请参阅底部)

当我使用一个content.xml模板运行它时,它可以很好地工作并将其返回给我

app_1         | 2020-08-20 07:54:57.786 INFO Processing ./documents/bon/META-INF
app_1         | 2020-08-20 07:54:57.786 INFO Processing ./documents/bon/META-INF/manifest.xml
app_1         | 2020-08-20 07:54:57.786 INFO Processing ./documents/bon/Pictures
app_1         | 2020-08-20 07:54:57.786 INFO Processing ./documents/bon/Pictures/10000000000001600000012D9E307CB2879DFB48.png
app_1         | 2020-08-20 07:54:57.786 INFO Processing ./documents/bon/Pictures/10000000000001CD000000748F8655D91EA6B1A8.png
app_1         | 2020-08-20 07:54:57.787 INFO Processing ./documents/bon/Pictures/100002010000026C00000445EABC4B9AD8977F8C.png
app_1         | 2020-08-20 07:54:57.791 INFO Processing ./documents/bon/Thumbnails
app_1         | 2020-08-20 07:54:57.791 INFO Processing ./documents/bon/Thumbnails/thumbnail.png
app_1         | 2020-08-20 07:54:57.793 INFO Processing ./documents/bon/content.xml
app_1         | 2020-08-20 07:54:57.793 INFO Processing ./documents/bon/manifest.rdf
app_1         | 2020-08-20 07:54:57.794 INFO Processing ./documents/bon/meta.xml
app_1         | 2020-08-20 07:54:57.794 INFO Processing ./documents/bon/mimetype
app_1         | 2020-08-20 07:54:57.794 INFO Processing ./documents/bon/settings.xml
app_1         | 2020-08-20 07:54:57.794 INFO Processing ./documents/bon/styles.xml

但是当我使用另一个模板运行它时,它就会出错

app_1         | 2020-08-20 07:56:57.755 INFO Processing ./documents/bon/META-INF
app_1         | 2020-08-20 07:56:57.755 INFO Processing ./documents/bon/META-INF/manifest.xml
app_1         | 2020-08-20 07:56:57.756 INFO Processing ./documents/bon/Pictures
app_1         | 2020-08-20 07:56:57.756 INFO Processing ./documents/bon/Pictures/10000000000001600000012D9E307CB2879DFB48.png
app_1         | 2020-08-20 07:56:57.756 INFO Processing ./documents/bon/Pictures/10000000000001CD000000748F8655D91EA6B1A8.png
app_1         | 2020-08-20 07:56:57.758 INFO 2
app_1         | 2020-08-20 07:56:57.758 INFO &{0xc0000b8000 [0xc000423a00 0xc000423a70] 0xc00007e0f0 false map[]  <nil>}
app_1         | 2020-08-20 07:56:57.758 INFO Pictures/10000000000001CD000000748F8655D91EA6B1A8.png
app_1         | 2020-08-20 07:56:57.758 INFO ./documents/bon/Pictures/10000000000001CD000000748F8655D91EA6B1A8.png
app_1         | 2020-08-20 07:56:57.758 INFO <nil>
app_1         | 2020-08-20 07:56:57.758 INFO invalid argument
app_1         | 2020/08/20 07:56:57 http: panic serving 172.18.0.1:42280: runtime error: invalid memory address or nil pointer dereference
app_1         | goroutine 191 [running]:
app_1         | net/http.(*conn).serve.func1(0xc00021a0a0)
app_1         |         /usr/local/go/src/net/http/server.go:1772 +0x139
app_1         | panic(0x94bfa0,0xe2ddb0)
app_1         |         /usr/local/go/src/runtime/panic.go:975 +0x3e3
app_1         | aptacrm/util.processFolder(0xc00007e050,0xc000516de0,0x19,0xc000028940,0x9)
app_1         |         /go/src/aptacrm/util/Zip.go:47 +0x3fd
app_1         | aptacrm/util.processFolder(0xc00007e050,0x9e26f9,0x10,0x0,0x0)
app_1         |         /go/src/aptacrm/util/Zip.go:31 +0x340
app_1         | aptacrm/util.ZipFolder(0x9e26f9,0xc0001c21c0,0x63)
app_1         |         /go/src/aptacrm/util/Zip.go:14 +0x18b
app_1         | aptacrm/routes/RestfullAPI.exportBon(0xaafd00,0xc000226000,0xc0008faf00)
app_1         |         /go/src/aptacrm/routes/RestfullAPI/bons.go:236 +0x8af
app_1         | net/http.HandlerFunc.ServeHTTP(0xa02870,0xaafd00,0xc0008faf00)
app_1         |         /usr/local/go/src/net/http/server.go:2012 +0x44
app_1         | aptacrm/routes.Middleware.func1(0xaafd00,0xc0008faf00)
app_1         |         /go/src/aptacrm/routes/init.go:37 +0x80
app_1         | net/http.HandlerFunc.ServeHTTP(0xc00000eac0,0xc0008faf00)
app_1         |         /usr/local/go/src/net/http/server.go:2012 +0x44
app_1         | github.com/gorilla/mux.(*Router).ServeHTTP(0xc000218000,0xc0008fad00)
app_1         |         /go/src/github.com/gorilla/mux/mux.go:210 +0xe2
app_1         | net/http.(*ServeMux).ServeHTTP(0xe40600,0xc0008fad00)
app_1         |         /usr/local/go/src/net/http/server.go:2387 +0x1a5
app_1         | net/http.serverHandler.ServeHTTP(0xc0002260e0,0xc0008fad00)
app_1         |         /usr/local/go/src/net/http/server.go:2807 +0xa3
app_1         | net/http.(*conn).serve(0xc00021a0a0,0xab0dc0,0xc00024cd00)
app_1         |         /usr/local/go/src/net/http/server.go:1895 +0x86c
app_1         | created by net/http.(*Server).Serve
app_1         |         /usr/local/go/src/net/http/server.go:2933 +0x35c

文件content.xml的每个点都相同,但唯一的变化是文件大小

Normal    version: -rw-r--r-- 1 root  root  43580 Aug 20 09:59 content.xml
Defective version: -rw-r--r-- 1 root  root  43416 Aug 20 09:56 content.xml

也许有人知道发生了什么事吗?

使用的功能

package util

import (
    "os"
    "archive/zip"
    "io/ioutil"
    "aptacrm/vars"
)

func ZipFolder(folder string,output string) {
    var outFile,_ = os.Create(output)
    defer outFile.Close()
    var writer = zip.NewWriter(outFile)
    processFolder(writer,folder,"")

    writer.Close()

}

func processFolder(writer *zip.Writer,basePath string,baseInZip string) {
    var files,_ = ioutil.ReadDir(basePath)

    for _,file := range files {
        var realFilePath = basePath + file.Name()
        var zipFilePath = baseInZip + file.Name()
        vars.Logger.Info("Processing",realFilePath)

        var isDir = file.IsDir()

        if isDir {
            processFolder(writer,realFilePath + "/",baseInZip + file.Name() + "/")
        } else {
            var fileData,e1 = ioutil.ReadFile(realFilePath)
            if e1 != nil {
                vars.Logger.Info("1")
                vars.Logger.Info(e1.Error())
            }
            var fileWriter,e2 = writer.Create(zipFilePath)
            if e2 != nil {
                vars.Logger.Info("2")
                vars.Logger.Info(writer)
                vars.Logger.Info(zipFilePath)
                vars.Logger.Info(realFilePath)
                vars.Logger.Info(fileWriter)
                vars.Logger.Info(e2.Error())
            }
            var _,e3 = fileWriter.Write(fileData)
            if e3 != nil {
                vars.Logger.Info("3")
                vars.Logger.Info(e3.Error())
            }
        }
    }
}

其他信息:

  • 通过golang docker容器golang:alpine进入1.15.0版
  • vars.Logger是stdlog.GetFromFlags()库中的github.com/alexcesaro/log/stdlog

解决方法

感谢Marc为我提供了良好的指导!

问题出在我的输出文件的命名上,其中包含/,而os.Create返回了一个错误,其中包含我需要修复的所有指示!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res