vb 服务器共享文件夹代码,VB实现的递归复制文件和搜索文件的代码分享

在程序中要做一个复制文件夹的功能,用递归写起来很方便。后来要某位仁兄(自己知道就行了 - -)实现一个类似的,貌似不是那么顺利,这里把复制文件夹的递归代码丢出来:

Public Shared Sub CopyDirectory(source As String, destination As String)

If Directory.Exists(destination) = False Then

Try

Directory.CreateDirectory(destination)

Catch ex As Exception

Logger.LogError(Logger.SourceType.Application, "Copy build process: Cannot create folder: " & destination)

Return

End Try

End If

For Each paths As String In Directory.GetDirectories(source)

CopyDirectory(paths, Path.Combine(destination, paths.Substring(paths.LastIndexOfAny({""c, "/"c}) + 1)))

Next

For Each files As String In Directory.GetFiles(source)

Try

File.Copy(files, Path.Combine(destination, files.Substring(files.LastIndexOfAny({""c, "/"c}) + 1)), True)

_copiedFiles += 1

Catch ex As Exception

Logger.LogError(Logger.SourceType.Application, "Copy build process: Cannot copy file: " & files)

End Try

Next

End Sub

递归的程序实在是很简洁很漂亮吧?后来又写了一个在文件夹中搜索文件的方法,也是递归的,那么在这里就一并丢出来:

'''

''' Search the specified file in the folder and its sub folders and return its full path name. Empty string if not found.

'''

''' The file to search (no folder).

'''

Public Shared Function SearchFile(folder As String, fileName As String) As String

If Directory.Exists(folder) = False Then Return String.Empty

fileName = fileName.Trim.ToLower

If fileName.IndexOfAny({""c, "/"c}) >= 0 Then

fileName = GetFileName(fileName)

End If

Dim list() As String = Directory.GetFiles(folder)

For i As Integer = 0 To list.GetUpperBound(0)

If GetFileName(list(i)).Trim.ToLower = fileName Then Return list(i)

Next

Dim directories() As String = Directory.GetDirectories(folder)

For i As Integer = 0 To directories.GetUpperBound(0)

Dim return_file As String = SearchFile(directories(i), fileName)

If return_file.Length > 0 Then Return return_file

Next

Return String.Empty

End Function

GetFileName是我自己写的一个把路径去掉只剩下文件名和扩展名的方法。

这两段代码实在是太简单了,所以我觉得没有什么地方要解释了(其实是准备下班走人了)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值