简单的文件处理类

由于项目需要,写了一个文件处理类,具体如下:
Imports System
Imports System.IO
Namespace MyFileManager
    
Public Class FileManage
        
Private Const strPath As String = "\"

        
Private Sub New()
        
End Sub


        
Public Shared Sub CopyFiles(ByVal sourceDir As StringByVal targetDir As StringByVal overWrite As Boolean)

            CopyFiles(sourceDir, targetDir, overWrite, 
False)
            
'拷贝文件夹下的文件,不拷贝目录或拷贝单个文件
        End Sub


        
Public Shared Sub CopyFiles(ByVal sourceDir As StringByVal targetDir As StringByVal overWrite As BooleanByVal copySubDir As Boolean)

            
For Each sourceFileName As String In Directory.GetFiles(sourceDir)
                
'在这里要拷贝文件夹内的所有文件
                Dim targetFileName As String = Path.Combine(targetDir, sourceFileName.Substring(sourceFileName.LastIndexOf(strPath) + 1))
                
'这里合并两个路径,以得到目标文件名 

                
If File.Exists(targetFileName) Then
                    
If overWrite = True Then
                        File.SetAttributes(targetFileName, FileAttributes.Normal)
                        File.Copy(sourceFileName, targetFileName, overWrite)
                        
'覆盖拷贝文件
                    End If
                
Else
                    File.Copy(sourceFileName, targetFileName, overWrite)
                    
'拷贝文件
                End If
            
Next

            
If copySubDir Then
                
For Each sourceSubDir As String In Directory.GetDirectories(sourceDir)
                    
Dim targetSubDir As String = Path.Combine(targetDir, sourceSubDir.Substring(sourceSubDir.LastIndexOf(strPath) + 1))
                    
'这里合并两个路径,以得到目标文件目录 
                    If Not Directory.Exists(targetSubDir) Then
                        Directory.CreateDirectory(targetSubDir)
                        
'如不存在,则创建
                    End If
                    CopyFiles(sourceSubDir, targetSubDir, overWrite, 
True)
                    
'这里是递归调用,以下一样
                    '拷贝目录
                Next
            
End If

        
End Sub


        
Public Shared Sub MoveFiles(ByVal sourceDir As StringByVal targetDir As StringByVal overWrite As Boolean)

            MoveFiles(sourceDir, targetDir, overWrite, 
False)
            
'移动文件夹下的文件或单个文件

        
End Sub


        
Public Shared Sub MoveFiles(ByVal sourceDir As StringByVal targetDir As StringByVal overWrite As BooleanByVal moveSubDir As Boolean)

            
For Each sourceFileName As String In Directory.GetFiles(sourceDir)
                
Dim targetFileName As String = Path.Combine(targetDir, sourceFileName.Substring(sourceFileName.LastIndexOf(strPath) + 1))
                
If File.Exists(targetFileName) Then
                    
If overWrite = True Then
                        File.SetAttributes(targetFileName, FileAttributes.Normal)
                        File.Delete(targetFileName)
                        File.Move(sourceFileName, targetFileName)
                    
End If
                
Else
                    File.Move(sourceFileName, targetFileName)
                
End If
            
Next
            
'移除文件夹下的所有文件(不包括目录)

            
If moveSubDir Then
                
For Each sourceSubDir As String In Directory.GetDirectories(sourceDir)
                    
Dim targetSubDir As String = Path.Combine(targetDir, sourceSubDir.Substring(sourceSubDir.LastIndexOf(strPath) + 1))
                    
If Not Directory.Exists(targetSubDir) Then
                        Directory.CreateDirectory(targetSubDir)
                    
End If
                    MoveFiles(sourceSubDir, targetSubDir, overWrite, 
True)
                    
'通过递归调用movefiles,把所有的文件move
                    Directory.Delete(sourceSubDir)
                
Next
            
End If
        
End Sub


        
Public Shared Sub DeleteFiles(ByVal targetDir As String)

            DeleteFiles(targetDir, 
False)
            
'删除文件
        End Sub


        
Public Shared Sub DeleteFiles(ByVal targetDir As StringByVal delSubDir As Boolean)
            
'删除所有文件及其目录
            For Each fileName As String In Directory.GetFiles(targetDir)
                File.SetAttributes(fileName, FileAttributes.Normal)
                File.Delete(fileName)
            
Next
            
If delSubDir Then
                
Dim dir As DirectoryInfo = New DirectoryInfo(targetDir)
                
For Each subDi As DirectoryInfo In dir.GetDirectories
                    
'这个写法方便一点
                    DeleteFiles(subDi.FullName, True)
                    subDi.Delete()
                
Next
            
End If
        
End Sub


        
Public Shared Sub CreateDirectory(ByVal targetDir As String)
            ’创建目录
            
Dim dir As DirectoryInfo = New DirectoryInfo(targetDir)
            
If Not dir.Exists Then
                
dir.Create()
            
End If
        
End Sub


        
Public Shared Sub CreateDirectory(ByVal parentDir As StringByVal subDirName As String)
            CreateDirectory(parentDir 
+ strPath + subDirName)
        
End Sub


        
Public Shared Sub DeleteDirectory(ByVal targetDir As String)
            
'删除目录及目录的内容
            Dim dirInfo As DirectoryInfo = New DirectoryInfo(targetDir)
            
If dirInfo.Exists Then
                DeleteFiles(targetDir, 
True)
                dirInfo.Delete(
True)
            
End If
        
End Sub

 
End Class

End Namespace

posted on 2005-09-22 11:42  天浩  阅读(1055)  评论(2编辑  收藏  举报

导航