Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文件从一个文件夹移动到另一个VB.Net_Vb.net - Fatal编程技术网

将文件从一个文件夹移动到另一个VB.Net

将文件从一个文件夹移动到另一个VB.Net,vb.net,Vb.net,我正在试图找出如何移动5个文件 settings.txt 设置2.txt 设置3.txt 设置4.txt 设置5.txt 从一个文件夹到另一个文件夹 虽然我知道文件名和文件夹名,但我不知道该文件夹在用户计算机上的位置 我的想法是使用FolderBrowseDialog,用户可以浏览到文件夹所在的位置,然后当按下OK时,它会将文件复制到目标文件夹,覆盖其中的内容 这就是我目前所拥有的。 Dim FolderPath As String Dim result As Windows.Forms

我正在试图找出如何移动5个文件

settings.txt 设置2.txt 设置3.txt 设置4.txt 设置5.txt

从一个文件夹到另一个文件夹

虽然我知道文件名和文件夹名,但我不知道该文件夹在用户计算机上的位置

我的想法是使用FolderBrowseDialog,用户可以浏览到文件夹所在的位置,然后当按下OK时,它会将文件复制到目标文件夹,覆盖其中的内容

这就是我目前所拥有的。

Dim FolderPath As String
    Dim result As Windows.Forms.DialogResult = FolderBrowserImport.ShowDialog()

    If result = DialogResult.OK Then
        FolderPath = FolderBrowserImport.SelectedPath & "\"

            My.Computer.FileSystem.CopyFile(
            FolderPath & "settings.txt", "c:\test\settings.txt", overwrite:=True)

    ElseIf result = DialogResult.Cancel Then
        Exit Sub

    End If

有没有一种方法可以让它一次复制所有5个文件,而不是运行5次

一旦您选择了文件夹,使用
For
循环来建立您要查找的文件的名称。使用
System.IO.File.Exists()
查看它们是否存在。使用
System.IO.Path.Combine()
将文件夹与文件名正确组合

下面是一个完整的示例(无异常处理,应添加):


选定文件夹后,使用
For
循环建立要查找的文件的名称。使用
System.IO.File.Exists()
查看它们是否存在。使用
System.IO.Path.Combine()
将文件夹与文件名正确组合

下面是一个完整的示例(无异常处理,应添加):


我知道IdleMind为什么推荐他们这样做,但如果只列出文件名,可能会使代码更可读:


Imports System.IO

...



    Dim result = FolderBrowserImport.ShowDialog()

    If result <> DialogResult.OK Then Exit Sub

    For Each s as String in {"settings.txt", "settings2.txt", "settings3.txt", "settings4.txt", "settings5.txt" }

      File.Copy( _
        Path.Combine(FolderBrowserImport.SelectedPath, s), _
        Path.Combine("c:\test", s), _
        True _
      )

    Next s
小贴士:

  • 执行
    如果不好,则退出Sub
    通常比执行
    如果好,则退出(大量缩进代码)如果结束
    ——在开始时测试所有已知的故障条件,如果有任何故障,则退出Sub,而不是安排大量缩进代码
  • 使用
    Path.Combine
    组合路径和文件名等;它知道如何处理散乱的
    \
    字符
  • 使用导入导入名称空间,而不是一直拼写所有内容(
    System.Windows.Forms.DialogResult
    -winforms应用程序可能已经在分部类中导入了所有必需的内容,因此您可以说
    DialogResult
    。如果您得到一条红色的曲线,请指向相邻的灯泡,然后选择导入System.Windows/Forms等)

我知道IdleMind为什么推荐他们这样做,但如果只列出文件名,可能会使代码更可读:


Imports System.IO

...



    Dim result = FolderBrowserImport.ShowDialog()

    If result <> DialogResult.OK Then Exit Sub

    For Each s as String in {"settings.txt", "settings2.txt", "settings3.txt", "settings4.txt", "settings5.txt" }

      File.Copy( _
        Path.Combine(FolderBrowserImport.SelectedPath, s), _
        Path.Combine("c:\test", s), _
        True _
      )

    Next s
小贴士:

  • 执行
    如果不好,则退出Sub
    通常比执行
    如果好,则退出(大量缩进代码)如果结束
    ——在开始时测试所有已知的故障条件,如果有任何故障,则退出Sub,而不是安排大量缩进代码
  • 使用
    Path.Combine
    组合路径和文件名等;它知道如何处理散乱的
    \
    字符
  • 使用导入导入名称空间,而不是一直拼写所有内容(
    System.Windows.Forms.DialogResult
    -winforms应用程序可能已经在分部类中导入了所有必需的内容,因此您可以说
    DialogResult
    。如果您得到一条红色的曲线,请指向相邻的灯泡,然后选择导入System.Windows/Forms等)

Caius Jard,这正是我要找的。将文件名放在{}中,这称为数组吗?是的,这是一个数组初始值设定项。这里有完整的文档:数组初始值设定项本身不是数组;它们是创建数组的一种快捷方式。你可以将长格式的
Dim文件(4)称为新字符串
文件(0)=“settings.txt”
文件(1)=“settings2.txt”
…但是使用初始值设定项是“创建一个数组并返回它”的快捷方式-您可以想象VB编译器会为您将初始值设定项重写为长格式。此外,我们还可以将其捕获到变量
Dim files={“a”,“b”}
然后对文件中的每个f说
——只是我们不需要将数组保存在一个单独的变量中;只需要它来循环,因为要知道,使用第二个较短的代码,您将不知道是否丢失了任何文件;它只会愉快地对模式找到的文件执行操作……可能没有。这一点很好;这可能是一个积极的或消极的事情-前一个代码将崩溃,如果它找不到其中一个文件..它还可能作用于比具有固定文件名listCaius Jard的代码更多的文件,这正是我所寻找的这叫做数组吗?是的,这是一个数组初始值设定项。这里有完整的文档:数组初始值设定项本身不是数组;它们是创建数组的一种快捷方式。你可以将长格式的
Dim文件(4)称为新字符串
文件(0)=“settings.txt”
文件(1)=“settings2.txt”
…但是使用初始值设定项是“创建一个数组并返回它”的快捷方式-你可以想象VB编译器会为你将初始值设定项重写为长格式。此外,我们还可以将其捕获到变量
Dim files={“a”,“b”}
然后对文件中的每个f说
——只是我们不需要将数组保存在一个单独的变量中;只需要它来循环,因为要知道,使用第二个较短的代码,您将不知道是否丢失了任何文件;它只会愉快地对模式找到的文件执行操作……可能没有。这一点很好;这可能是一个积极的或消极的事情-前一个代码将崩溃,如果它找不到其中一个文件..它也可能对更多的文件比代码有固定的文件名列表
For Each s as String in Directory.GetFiles(FolderBrowserImport.SelectedPath, "settings*.txt", SearchOption.TopDirectoryOnly)

  File.Copy(s, Path.Combine("c:\test", Path.GetFilename(s)), True)

Next s