Foxtable(狐表)用户栏目专家坐堂 → [求助]Addfile的问题


  共有3044人关注过本帖树形打印复制链接

主题:[求助]Addfile的问题

帅哥哟,离线,有人找我吗?
chnfo
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2222 积分:18271 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]Addfile的问题  发帖心情 Post By:2020/11/2 14:15:00 [只看该作者]

用表A的X列存了需要压缩的文件的列表。
然后在项目的export目录下存放了一些文件,包括了X列中有的,也有没有的。

Dim zip As New zipFile
Dim zFile As String = ".\export\YS.zip"  ‘准备把表A的X列中存在的文件压缩成为一个压缩包,文件名为YS.zip’

If FileSys.FileExists(zfile) Then '如果压缩文件已经存在
    zip.Open(zFile) '则打开
Else
    zip.Create(zFile) '否则创建
End If

For Each file As String In  DataTables("表A").GetValues("X")
    If filesys.FileExists(".\export\" & file) = True AndAlso file <> "YS.zip" Then
        zip.AddFile(".\export\" &  file )
    End If
Next
zip.Close()

然后执行就报错了
版本:2020.5.29.8
---------------------------
代码执行出错,错误信息:
System.ArgumentException: 路径中具有非法字符。
   在 System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)
   在 System.IO.Path.GetFileName(String path)
   在 C1.C1Zip.C1ZipEntryCollection.a(String A_0, Int32 A_1)
   在 UserCode.Test()
---------------------------
确定   

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2222 积分:18271 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/11/2 14:18:00 [只看该作者]

很诡异的是,这样运行又没有问题
Dim zip As New zipFile
Dim zFile As String = ".\export\YS.zip"

If FileSys.FileExists(zfile) Then '如果压缩文件已经存在
    zip.Open(zFile) '则打开
Else
    zip.Create(zFile) '否则创建
End If

For Each file As String In filesys.GetFiles(".\export")    ‘这是直接去export下去压缩文件’
    If filesys.GetName(file) <> "YS.zip" Then
        zip.AddFile( file )
    End If
Next
zip.Close()

两者的区别就是一个是从其它地方获取文件的名称,然后与文件的路径组合成需要压缩的文件名(含路径)
一个是直接在文件夹下读取文件名称

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107873 积分:548728 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/2 14:19:00 [只看该作者]

本地文件操作都必须使用完整的绝对路径,不能使用相对路径


Dim zFile As String = "c:\xxx\export\YS.zip" 

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2222 积分:18271 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/11/2 14:26:00 [只看该作者]

Dim zip As New zipFile
Dim zFile As String = ".\export\YS.zip"

If FileSys.FileExists(zfile) Then '如果压缩文件已经存在
    zip.Open(zFile) '则打开
Else
    zip.Create(zFile) '否则创建
End If

For Each file As String In filesys.GetFiles(".\export")
    If filesys.GetName(file) <> "YS.zip" Then
        zip.AddFile( file )
    End If
Next
zip.Close()

----但这样执行试过了,没有问题哟

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107873 积分:548728 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/2 14:33:00 [只看该作者]

请改为完整的绝对路径

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2222 积分:18271 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/11/2 14:47:00 [只看该作者]

好吧,确实绝对路径可以解决。
用projectpath,也不复杂

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2222 积分:18271 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/11/3 9:07:00 [只看该作者]

再请教一下,哪些情况下可以用相对路径?比如外部数据连接,如果单机使用安装目录下的指定accdb。象readalltext之类的哪些要用绝对路径?还是说不管是啥,全换成projectpath?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107873 积分:548728 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/3 9:26:00 [只看该作者]

客户端程序基本上都只能使用绝对路径。只有网页有相对路径的用法

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2222 积分:18271 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/11/3 10:45:00 [只看该作者]

设置外部数据源的那里,选择和输入数据库名称那里,能用.\xxx.accdb吗?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107873 积分:548728 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/3 10:47:00 [只看该作者]

不能

 回到顶部
总数 17 1 2 下一页