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

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

''' <summary>
''' Search the specified file in the folder and its sub folders and return its full path name. Empty string if not found.
''' </summary>
''' <param name="fileName">The file to search (no folder).</param>
''' <remarks></remarks>
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是我自己写的一个把路径去掉只剩下文件名和扩展名的方法。

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

(0)

相关推荐

  • VB简单实现防止文件被改写

    最近在写的一个小程序中有个配置文件,这个文件对整个程序来说是至关重要的,如果它被删除或者改写的话,整个程序无法运行,或者运行后无法关闭.所以我一直在寻找如果让手工无法改写文件的方法. 对于"删除"来说是很容易解决的,程序中查找配置文件的路径,若为空则创建,并给些默认值.VB的示例代码如下: FileName = App.Path + "\CONFIG" '如果文件不存在,则创建文件 If Dir(FileName) = "" Then Open

  • VB.NET获取文件默认图标的方法

    本文实例讲述了VB.NET获取文件默认图标的方法.分享给大家供大家参考.具体如下: 该段代码帮助你获取计算机上的任何文件的默认图标,使用Shell32.dll. Private Structure SHFILEINFO Public hIcon As IntPtr Public iIcon As Integer Public dwAttributes As Integer <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _ Public

  • VB获取文件大小的方法

    本文实例讲述了VB获取文件大小的方法.分享给大家供大家参考.具体实现方法如下: <% ' Copyright (c) 2009, reusablecode.blogspot.com; some rights reserved. ' ' This work is licensed under the Creative Commons Attribution License. To view ' send a letter to Creative Commons, 559 Nathan Abbott

  • VB实现按行读取文本文件的方法

    本文实例讲述了VB实现按行读取文本文件的方法.分享给大家供大家参考.具体如下: '(general declaration) Dim nFileNum As Integer, sText As String, sNextLine As String, lLineCount As Long '================================== Private Sub Command1_Click() ' Get a free file number nFileNum = Free

  • VB打开与保存txt文件的方法

    本文实例讲述了VB打开与保存txt文件的方法.分享给大家供大家参考.具体如下: Private Sub cmdsave_Click() Dim filelocation As String ' loads save as box commondialog1.ShowSave filelocation = commondialog1.FileName ' append saves over file if it assists Open filelocation For Append As #1

  • VB.NET拷贝整个目录下所有子目录及文件的实例代码

    复制代码 代码如下: Public Sub CopyDerictory(ByVal DirectorySrc As DirectoryInfo, ByVal DirectoryDes As DirectoryInfo)        Dim strDirectoryDesPath As String = DirectoryDes.FullName & "" & DirectorySrc.Name         If Not Directory.Exists(strDi

  • VB实现的递归复制文件和搜索文件的代码分享

    在程序中要做一个复制文件夹的功能,用递归写起来很方便.后来要某位仁兄(自己知道就行了 - -)实现一个类似的,貌似不是那么顺利,这里把复制文件夹的递归代码丢出来: Public Shared Sub CopyDirectory(source As String, destination As String) If Directory.Exists(destination) = False Then Try Directory.CreateDirectory(destination) Catch

  • PHP递归复制、移动目录的自定义函数分享

    虽然复制一个目录是文件操作的基本功能.但PHP中也没有给出特定的函数,同样需要自定义一个递归函数实现.要复制一个包含多个子目录的目录,将涉及文件的复制.目录创建等操作.复制一个文件可以通过PHP提供的copy()函数完成,创建目录可以使用mkdir()函数.定义函数时,首先对源目录进行遍历,如果遇到的是普通文件,直接使用copy()函数进行复制.如果遍历时遇到一个目录,则必须建立该目录,然后再对该目录下的文件进行复制操作,如果还有子目录,则使用递归重复操作,最终将整个目录复制完成.自定义的递归函

  • jQuery实现的类似淘宝网站搜索框样式代码分享

    运行效果图:                                                ----------------------查看效果----------------------- 小提示:浏览器中如果不能正常运行,可以尝试切换浏览模式. 为大家分享的类似淘宝网站搜索框样式代码如下 <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo

  • python读文件逐行处理的示例代码分享

    复制代码 代码如下: import os ## for os.path.isfile() def dealline(line) :    print(line) ## 针对line我可以做很多事情 def getfilename() :    return input('Please input file name(input exit() for exit):').strip() class more : ## MORE功能    linenum = 0    size = 10    def

  • Python使用百度API上传文件到百度网盘代码分享

    关于如何获取 access_token 这个可以自己查百度开放的OAuth 2.0 的 API.这里不做介绍. 第三方 Python 库 poster 复制代码 代码如下: # coding:UTF-8 import urllib import urllib2 __author__ = 'Administrator' from poster.encode import multipart_encode from poster.streaminghttp import register_opene

  • Shell脚本实现检测文件是否被修改过代码分享

    #!/bin/bash funmd5_1() { find /root/passwd -type f | xargs md5sum > /tmp/funmd5_1.log } funmd5_2() { find /root/passwd -type f | xargs md5sum > /tmp/funmd5_2.log } if [ ! -f /tmp/funmd5_1.log ];then funmd5_1 fi funmd5_2 diff /tmp/funmd5_1.log /tmp/f

  • 递归实现php数组转xml的代码分享

    PHP中将数组转为xml的需求是常见的,而且实现方法也有很多种,百度找了一下各种实现方法,但是基本是借组一些组件啥的.我就自己写了一个字符串拼组的方法,支持多维数组.仅供参考,不足之处敬请不吝赐教! /** * 将数组转换为xml * @param array $data 要转换的数组 * @param bool $root 是否要根节点 * @return string xml字符串 * @author Dragondean * @url http://www.cnblogs.com/drag

  • VB实现的16位和32位md5加密代码分享

    在各种登陆系统中,用户密码的md5加密是不可少的. 这么说吧,即使你通过各种手段看到了用户的登陆密码,但那一串古古怪怪的东西你也不可能知道它是什么,这就是保护. md5加密运算是不可逆的,就是说你不能通过那一串古古怪怪的东西算出它原始的样子. 下面是完整的md5代码,不要去理解算法了,用到时拿去直接调用. Private Const BITS_TO_A_BYTE = 8 Private Const BYTES_TO_A_WORD = 4 Private Const BITS_TO_A_WORD

  • PHP实现递归复制整个文件夹的类实例

    本文实例讲述了PHP实现递归复制整个文件夹的类.分享给大家供大家参考.具体如下: <?php /* * 文件夹复制类 */ class CopyFile { public $fromFile; public $toFile; /* * $fromFile 要复制谁 * $toFile 复制到那 */ function copyFile($fromFile,$toFile){ $this->CreateFolder($toFile); $folder1=opendir($fromFile); w

  • linux 下python多线程递归复制文件夹及文件夹中的文件

    本文是利用python 复制文件夹 刚开始写了一个普通的递归复制文件夹    然后想了想 觉得对io频繁的程序 threading 线程还比较友好  就写了个多线程版本的  最恶心人的地方就是路径  其他都还好吧 import os import threading import multiprocessing length_of_folder = 0 def copyfile(Path): if os.path.isdir(Path): print("-----------%s" %

随机推荐