以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]zip文件流问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=173153) |
-- 作者:zhutangxin -- 发布时间:2021/11/17 1:38:00 -- [求助]zip文件流问题 老师您好,ZipFile有没有返回值,如何判断文件压缩已经压缩结束? 在写一个打包程序,需要将多个文件夹的文件按原来的目录结构放到zip文件中。写了一个内部函数,一次处理一个文件夹 形式代码如下: Dim
zip
As New zipFile zip.create or zip.open ... for each fl as string in folder
zip.addfile(fl, \'路径/fl文件名\') next zip.close() 当需压缩多个文件夹时,需多次调用上述内部函数,如果前一个文件特别多时,会出现“流不支持写入”的报错。如果忽略,报错的文件夹没有把所有的文件压缩进去。 可能的原因是 zip.close 并不是zip已经结束,当下次再用 Dim zip As New zipFile 该压缩文件的时候,它将终止前面正在进行的压缩,从而报"流不支持写入"的错误。 有没有什么解决方法? 调用的目标发生了异常。 在 System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 在 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 在 Foxtable.UserFunctions.Execute(String Name, Object[] Args) 流不支持写入。 在 System.IO.FileStream.SetLength(Int64 value) 在 C1.C1Zip.d.a() 在 C1.C1Zip.d.c() 在 System.IO.Stream.Dispose() 在 C1.C1Zip.C1ZipFile.a(Stream A_0, String A_1, DateTime A_2) 在 C1.C1Zip.C1ZipFile.a(String A_0, String A_1, DateTime A_2) 在 C1.C1Zip.C1ZipEntryCollection.Add(String fileName, String entryName, DateTime dateTime) 在 C1.C1Zip.C1ZipEntryCollection.Add(String fileName, String entryName) 在 Foxtable.ZipFile.AddFile(String Filename, String NewFileName) 在 UserCode.AUo3pUozjTu0u80v5(Object[] Args)
|
-- 作者:zhutangxin -- 发布时间:2021/11/17 4:00:00 -- 用下述语句,也会出现报错,发现Publish\\faces下的表情文件没有打包全。 Dim st As Date = Date.Today Dim bakName As String = "Publish" Dim f As String = ProjectPath + bakName + CSTR(st).Replace("-","") +".zip" If FileSys.FileExists(f) Then FileSys.DeleteFile(f)
Dim zip As new ZipFile zip.Create(f) zip.AddFolder(projectpath & "publish") zip.Close --------------------------- 版本:2021.5.29.1 --------------------------- 代码执行出错,错误信息: System.NotSupportedException: 流不支持写入。 在 System.IO.FileStream.SetLength(Int64 value) 在 C1.C1Zip.d.a() 在 C1.C1Zip.d.c() 在 System.IO.Stream.Dispose() 在 C1.C1Zip.C1ZipFile.a(Stream A_0, String A_1, DateTime A_2) 在 C1.C1Zip.C1ZipFile.a(String A_0, String A_1, DateTime A_2) 在 C1.C1Zip.C1ZipEntryCollection.Add(String fileName, String entryName, DateTime dateTime) 在 C1.C1Zip.C1ZipEntryCollection.Add(String fileName, String entryName) 在 C1.C1Zip.C1ZipEntryCollection.a(String A_0, String A_1, Boolean A_2, Int32 A_3) 在 C1.C1Zip.C1ZipEntryCollection.a(String A_0, String A_1, Boolean A_2, Int32 A_3) 在 C1.C1Zip.C1ZipEntryCollection.AddFolder(String path) 在 UserCode.Test() --------------------------- 确定 --------------------------- [此贴子已经被作者于2021/11/17 4:01:09编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/11/17 8:58:00 -- 我测试没有问题。应该是其它原因,比如杀毒软件,关闭所有杀毒软件试试。把Foxtable设置为使用管理员身份运行,检查publish目录里是否有隐藏的系统文件 |
-- 作者:kgdce -- 发布时间:2023/3/24 10:58:00 -- 经过测试,压缩的文件多时,会随机出现上述问题,和电脑的Cpu运算速度有关系,在一台笔记本电脑win10系统上用一直没问题,换到一个win7云桌面上用,就会有报错,调用的目标发生异常,流不支持写入。 |