如果文件不存在于给定的本地文件列表中,则从 FTP 下载文件

2024-02-02

我有一个 FTP 服务器,我想从中下载本地目录中不存在的所有文件。

我尝试做一个For Next但我就是无法理解它。我尝试枚举这些文件,但由于对两个列表都执行了该操作,所以出现错误。我认为该错误可能是由于交叉检查在线文件与本地列表中的单个枚举文件引起的。我该如何消除这个问题?

FTPClient 类代码链接:

https://docs.google.com/file/d/0BxFwEuHe1g77TEw2ckZxVUlQdGM/edit?usp=sharing https://docs.google.com/file/d/0BxFwEuHe1g77TEw2ckZxVUlQdGM/edit?usp=sharing

所有代码:

          Dim ftp As New FTPclient("ftp://www.ahpg.zxq.net", "eg", "eg")

    Dim dirList As FTPdirectory = ftp.ListDirectoryDetail("/")
    Dim result As List(Of String) = ftp.ListDirectory("/")
    For Each line As String In result
        FTPLBX.Items.Add(line)
    Next
    Dim str As String
    Dim locstr As String
    Dim res_numer As IEnumerator
    res_numer = result.GetEnumerator()
    Dim loclist As List(Of String) = New List(Of String) _
                                     (System.IO.Directory.EnumerateFiles("C:/Program Files/Business Elements/Recent Files"))
    Dim LOC_Enum As IEnumerator
    LOC_Enum = loclist.GetEnumerator
    Do While LOC_Enum.MoveNext
        locstr = (LOC_Enum.Current)
    Loop
    Do While (res_numer.MoveNext)
        str = (res_numer.Current)
    Loop

    For Each str In loclist
        If Not loclist.Contains(str) = True Then
            My.Computer.Network.DownloadFile("ftp://www.ahpg.zxq.net/ftpfiles/" & str.ToString, _
                                             "C:/Program Files/Business Elements/Recent Files/" & str.ToString, "eg", "eg")
            MessageBox.Show("Done ")
        End If
    Next

End Sub

如果它对你有用的话,我让它变得更容易一些。干得好:

    ' Your instance of FTPClient
    Dim ftp As New FTPclient("ftp://www.ahpg.zxq.net", "eg", "eg")

    ' The path to destination folder (Local directory)
    Dim localDir As String = "C:/Program Files/Business Elements/Recent Files/"

    ' Lists all the file in the given directory of FTP server
    For Each file As FTPfileInfo In ftp.ListDirectoryDetail("/").GetFiles

        Try
            ftp.Download(file, localDir & file.Filename)

            ' The FTPClient class throws exception if the 
            ' file already exists in destination directory
        Catch e As ApplicationException
            Console.WriteLine(e.Message)
        End Try
    Next file

Note 1: 我下载了FTPClient http://www.codeproject.com/Articles/11991/An-FTP-client-library-for-NET-2-0班级来自CodeProject http://www.codeproject.com/但它与您在问题中提供的几乎相同。

Note 2: The FTPClient http://www.codeproject.com/Articles/11991/An-FTP-client-library-for-NET-2-0如果目标文件夹中存在该文件,它本身会引发异常。因此您无需费心比较文件。

Note 3: 注意后面的slash在......的最后locadDir细绳。如果没有,该文件将被下载到商业元素 folder.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果文件不存在于给定的本地文件列表中,则从 FTP 下载文件 的相关文章

  • 如何让 XDocument.Load 保留换行符

    using System IO StreamReader sr new System IO StreamReader path System Text Encoding GetEncoding Windows 1252 true xdoc
  • 使用VB.NET查找当前登录用户的用户名

    我正在尝试获取当前用户的用户名 当我登录时Johnny Smith并在没有管理员权限的情况下运行我的应用程序 它将返回正确的用户名 Johnny Smith 但问题是 当我右键单击并选择 以管理员身份运行 时 Windows 将提示我管理员
  • 使用VS2019创建WebService

    我想使用 Visual Studio 2019 使用 C 在现有 NET 项目中创建 WebService 在互联网上搜索 我能找到的只是旧 VS 版本的教程 如何创建它 使用 Visual Studio 2019 接收 POST 数据的最
  • 为什么 Azure Key Vault 安全?

    Azure Key Vault 为什么或如何安全 我需要在服务器上存储密钥 URI 客户端 ID 和客户端密钥 因此如果任何人授予对托管应用程序的服务器的访问权限 他将能够访问存储在 Key Vault 中的密钥和密钥 这意味着将它们存储在
  • List、IList、IEnumerable、IQueryable、ICollection,哪个返回类型最灵活?

    我之前已经在这里看到过这个问题 但我不满意我理解的完整后果 问题是使用 linq to sql 返回的数据层应该使用什么返回类型以获得最大的灵活性和查询能力 这是我读过 发现的 IEnumerable 是有限的 只允许向前读操作 IEnum
  • C# 异步任务比同步慢

    你知道为什么同步斐波那契方法比异步 等待更快并且比异步任务更快吗 我在每个项目方法上都使用了异步 所以主要是这是一个非常糟糕的方法 Code static int FibonacciSync int number if number 0 r
  • 对 ExecuteNonQuery() 的单次调用是原子的

    对 ExecuteNonQuery 的单次调用是否是原子的 或者如果单个 DbCommand 中有多个 sql 语句 那么使用事务是否有意义 请参阅我的示例以进行说明 using var ts new TransactionScope us
  • 如何在 Visual Basic DLL 和 C++ DLL 之间创建隔离/免注册 COM?

    我必须在 C DLL 中使用 VB COM DLL 我弄清楚了如何从 C DLL 访问 VB COM DLL 并且它可以工作 现在我遇到了一个问题 我必须使用隔离的 COM 免注册 COM 因为我无法在必须使用它的每台 PC 上注册 DLL
  • 您认为 ASP.NET MVC 会与 ASP.NET Webforms 竞争吗?

    您认为 ASP NET MVC 会在 Microsoft Web 开发市场中占据重要份额吗 还是会占市场的 10 15 哦是的 它将让 Web 表单脱颖而出 我们已经看到了真正的 MVC 框架在 Java 世界中的价值 在 MS 世界中 这
  • 异步protobuf序列化

    protobuf net 实现的一个限制是它同步调用底层流 通过不提供异步 API 例如BeginSerialize EndSerialize 或 TPL 等效项 我们被迫占用一个等待同步流 I O 的线程 是否有计划在 protobuf
  • 为什么发布和调试模式下的代码行为不同?

    考虑以下代码 private static void Main string args var ar new double 100 FillTo ref ar 5 Console WriteLine string Join ar Selec
  • 进程间并发文件写入

    我需要将不同进程的日志数据写入单个文件 我正在使用 Windows Mutex 它需要公共语言运行时支持 Mutex m gcnew Mutex false MyMutex m gt WaitOne File Open and Write
  • 找不到文件异常..但它就在那里

    嘿 这将是那些愚蠢的问题之一 我试图在本地系统上获取一个文件 但我不断收到FileNotFoundException thrown 请有人纠正我 if File Exists C logs hw healthways prod 2009 0
  • 获取字母数字值的 Max()

    我有一个包含字母数字 ID 的字典 例如 a10a10 和 d10a9 我想要其中最大的 ID 意思是 9 当我使用以下代码时 d10a9 是 MAX 因为 9 排在 10 之前 var lsd new Dictionary
  • C#.NET 将解决方案中各个项目的 settings.settings 文件编译为 1 个配置文件

    我有一个解决方案 其中一个项目是业务层 另一个项目是Web前端 其中有BL项目作为参考 它们每个都有自己的 settings settings 文件 但在构建时 BL 配置文件不会复制到 bin 目录中 我们之前解决这个问题的方法是将 BL
  • 您可以传递“类型”作为参数吗?

    我想在 VB NET 中做类似以下的事情 可以吗 Function task value as Object toType as Type Return DirectCast value toType End Function 是的 有系统
  • 如何在构建后事件中获取版本号

    我想使用构建后事件自动创建 nuget 包 然后将其复制到我们网络上的共享文件夹 如下所示 版本号 1 0 0 0 在 MyLib nuspec 文件中指定 nuget exe pack SolutionDir MyLib nuspec x
  • 命令式代码与声明式代码[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我试图理解命令式范例和声明式范例之间的区别 因为我必须对 Visual Basic 进行分类 NET 在不同的范式中 除了面向对象之外
  • 正则表达式删除某些字符周围不需要的空格

    我正在尝试从 JavaScript 文件中删除一些不需要的空格 并在将文件发送到客户端之前使用 C 和 Regex 组合文件 我有一个JavascriptHandler处理 js 文件 效果很好 这是我用来 打包 JavaScript 的函
  • 为什么 Dictionary 上的这个 Linq 查询不作为数据源工作

    我在VB中有以下内容 Dim sources From source In importSources Select New With Type source Key Source source Value Name dgridSource

随机推荐