Foxtable(狐表)用户栏目专家坐堂 → [求助]监控压缩文件,并解压


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

主题:[求助]监控压缩文件,并解压

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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
[求助]监控压缩文件,并解压  发帖心情 Post By:2017/11/6 10:57:00 [只看该作者]

在老师的指导下,已实现选择文件夹以压缩格式发送给好友。

现在想实现接收端监控接收文件夹,如果有新的压缩文件进入文件夹,就解压它,然后删除压缩文件,保留获取解压的文件夹。

遇到两个问题:

1、在文件监视器中不识别相对路径:ProjectPath & "\QQClient\ReceivedFiles";
2、不能监控子文件夹,但是在上述目录中的子目录是按照月份创建的,不固定。

 

文件监控器代码如下:

For Each f As String In FileSys.GetFiles(ProjectPath & "\QQClient\ReceivedFiles")    '遍历文件夹中的Zip文件
If FileSys.GetName(f) Like "*.zip" Then     ’如果有就解压到当前文件夹
    Dim zip As New zipFile
    zip.Open(f)
    zip.ExtractAll("ProjectPath & "\QQClient\ReceivedFiles")
    zip.Close()
    FileSys.DeleteFile(f,2,2)                        ’然后删除压缩文件

End If
Next

 

这种方式是否可行?或者有没有别的方法,请老师指教。

谢谢!


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/6 12:10:00 [只看该作者]

1、识别的

 

With FileWatcher
    .Path = ProjectPath & "QQClient\ReceivedFiles"
    .Delay = 1000
    .Enabled = True
End With

 

或者下面这样

 

With FileWatcher
    .Path = ProjectPath
    .Delay = 1000
    .Enabled = True
End With

 

2、目录下的所有文件,都能监视。你代码处理有问题。你加入msgbox(e.fullpath)看看

 

3、如果想单独做一个按钮,把所有zip文件解压,参考 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=107338&skin=0

 

 

 


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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2017/11/7 11:03:00 [只看该作者]

按照老师提示,重写代码如下,基本达到要求,代码也运行、并执行完毕,只是运行监视代码时,提示压缩文件内的文件被占用,怎样处理:

项目事件 AfterOpenProject:
With FileWatcher
    .Path = ProjectPath & "QQClient\ReceivedFiles"
    .Delay = 1000
    .Enabled = True
End With

 

文件监视器FileCreated:

If FileSys.GetName(e.FullPath) Like "*.zip" Then     '如果有压缩文件就解压到当前文件夹
    Dim zip As New zipFile
    zip.Open(e.FullPath)
    Dim ifo As new FileInfo(e.FullPath)
    Dim s As String = ifo.Name
    zip.ExtractAll(ifo.Path & "\" & s.substring(0,s.LastIndexOf(".")))    '解压到以压缩文件名为名称的文件夹下   

    zip.Close()
    'FileSys.DeleteFile(e.FullPath,2,2)                       '然后删除压缩文件-这句不用,否则在QQ窗口找不到发送的文件
End If

 


图片点击可在新窗口打开查看此主题相关图片如下:截屏图片.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/11/7 11:04:43编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/7 11:41:00 [只看该作者]

1、解压文件是否正常?只是删除文件有问题?

 

2、每一个zip都是这样还是说只有某个这样?

 

3、你可以另外写一个定时器,定时删除zip文件。


 回到顶部