Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共13 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:删除文件目录问题(问题已解决)

1楼
migold 发表于:2010/8/21 16:48:00

如题。

我写了代码

        If FileSys.DirectoryExists("D:\Temp") Then '要删除文件目录
            Try
                FileSys.DeleteDirectory("D:\Temp",2,2)
            Catch ex As Exception
            End Try
        End If

如果,D:\Temp目录下的文件或下级目录中有文件在使用中,就不能删除。

目的主要是:删除D:\Temp目录下未在使用的文件或下级目录,如果出现有使用的文件就忽略,请教高手代码

[此贴子已经被作者于2010-8-22 15:44:38编辑过]
2楼
mr725 发表于:2010/8/21 17:29:00
这个只能关闭正在使用的文件后, 才能删除这个目录吧.   另外即使可以, 也太危险了吧,因为打开的文件至少现在还是有用的,强制删除你会后悔的啊~  
3楼
migold 发表于:2010/8/21 17:36:00

我只是要删除Temp目录下的未打开文件,已打开的文件不用删除,

我只是要删除Temp目录下的未使用目录,已使用的目录不用删除

4楼
mr725 发表于:2010/8/21 21:59:00
应请教系统专家啦~  好像win都不能这样的,俺不行, 帮你顶~ 
5楼
czy 发表于:2010/8/21 22:44:00
以下是引用migold在2010-8-21 17:36:00的发言:

我只是要删除Temp目录下的未打开文件,已打开的文件不用删除,

我只是要删除Temp目录下的未使用目录,已使用的目录不用删除

 

应该可以的,不过写这样的代码有些麻烦。

6楼
migold 发表于:2010/8/22 15:44:00
谢谢
7楼
czy 发表于:2010/8/22 18:24:00

这样就算解决了?

你不是要求已经打开的文件不删除吗?

 

8楼
migold 发表于:2010/8/23 11:02:00

我是根据6楼楼主的代码提示,再写出代码。

9楼
狐狸爸爸 发表于:2010/8/23 11:04:00
6楼代码是不行的,可能会漏删除文件。
[此贴子已经被作者于2010-8-23 11:04:42编辑过]
10楼
migold 发表于:2010/8/23 11:07:00

Dim mFile1,mFile2,mFile3,mMes1 As String
Dim mi6,mi7,mi8 As Integer
mFile1 = "C:\Temp"
mFile2 = "D:\Temp"
mFile3 = "E:\Temp"
mMes1 = "删除临时目录"
            Dim mdeldirs,mdeldirs1,mdeldirs2,mdeldirs3 As New List(Of String)
            If mFile1 IsNot Nothing Andalso mFile1 <> "" Then
                mdeldirs.Add(mFile1)
            End If
            If mFile2 IsNot Nothing Andalso mFile2 <> "" Then
                mdeldirs.Add(mFile2)
            End If
            If mFile3 IsNot Nothing Andalso mFile3 <> "" Then
                mdeldirs.Add(mFile3)
            End If
            mi6 = 0
            For mdels As Integer = 0 To mdeldirs.Count - 1
                If FileSys.DirectoryExists(mdeldirs(mdels)) Then '判断删除目录存在
                    mdeldirs1.Clear()
                    mdeldirs1.Add(mdeldirs(mdels))
                    For Each mdelFile2 As String In FileSys.GetFiles(mdeldirs(mdels))
                        Try
                            FileSys.DeleteFile(mdelFile2,2,2) '则彻底删除文件
                        Catch ex As Exception
                            mi6 = mi6 + 1
                        End Try
                    Next
                    Do
                        mdeldirs2.Clear()
                        For mdels1 As Integer = 0 To mdeldirs1.Count - 1
                            For Each mdeldir As String In FileSys.GetDirectories(mdeldirs1(mdels1))
                                mdeldirs2.Add(mdeldir)
                                mdeldirs3.Add(mdeldir)
                                For Each mdelFile As String In FileSys.GetFiles(mdeldir)
                                    Try
                                        FileSys.DeleteFile(mdelFile,2,2) '则彻底删除文件
                                    Catch ex As Exception
                                        mi6 = mi6 + 1
                                    End Try
                                Next
                            Next
                        Next
                        mdeldirs1.Clear()
                        For mdels2 As Integer = 0 To mdeldirs2.Count - 1
                            mdeldirs1.Add(mdeldirs2(mdels2))
                        Next
                    Loop While mdeldirs1.Count > 0
                End If
            Next
            mi8 = 0
            For mdels3 As Integer = 0 To mdeldirs3.Count - 1
                mi7 = 0
                For Each mdeldir1 As String In FileSys.GetDirectories(mdeldirs3(mdeldirs3.Count-1-mdels3))
                    mi7 = 1
                Next
                For Each mdelFile1 As String In FileSys.GetFiles(mdeldirs3(mdeldirs3.Count-1-mdels3))
                    mi7 = 1
                Next
                mi8 = mi8 + mi7
                If mi7 = 0 Then
                    Try
                        FileSys.DeleteDirectory((mdeldirs3(mdeldirs3.Count-1-mdels3)),2,2)
                    Catch ex As Exception
                    End Try
                End If
            Next
            If mi6 > 0 Orelse mi8 > 0 Then
                MessageBox.Show(mi6 & "个文件未删除" & vbCrlf & mi8 & "个文件夹未删除" & vbCrlf,mMes1)
            Else
                MessageBox.Show("全都删除完成",mMes1)
            End If

这个代码,是我按照6楼提示写的,请指教

共13 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03906 s, 2 queries.