gpt4 book ai didi

.net - 使用 .NET System.IO File.Copy 按顺序复制文件

转载 作者:行者123 更新时间:2023-12-02 18:34:16 28 4
gpt4 key购买 nike

我正在 Windows 应用程序中创建基本文件复制操作。我注意到 System.IO File.Copy 随机复制文件。有没有办法控制首先复制哪些文件。例如,如果我们要从最小文件大小开始复制文件到最大文件大小。或者按字母顺序,假设开始复制文件名 [从] A 到 Z 的文件,或者按数字顺序,文件名 [从] 1 到 100。

我使用这个简单的代码从文件夹复制文件,但这会“随机”复制文件。见下文:

Private Sub btnCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCopy.Click
Dim source as string = "c:\copyfiles"
Dim destination as string = "d:\backup"
Dim filepath as string = destination & "\"

For Each filename As String In Directory.GetFiles(source)
If File.Exists(filename) Then
Dim dFile As String = String.Empty
Dim dFilePath As String = String.Empty

dFile = Path.GetFileName(filename) 'get filenames from source
dFilePath = filepath & dFile 'concatenate filepath and filename

File.Copy(filename, dFilePath, True) 'copy files from "c:\copyfiles" folder to destination
End If

Next
MsgBox("Copy Successful", vbOKOnly, "Message")
End Sub

最佳答案

如果您确实想通过名称以外的其他方式处理它们(最小到最大文件大小,或者最新或最旧),那么您应该使用DirectoryInfo,这样您就可以使用DirectoryInfo来处理它们。可以获取这些 FileInfo 属性。

' simple ordering by size
Dim dix As New DirectoryInfo(_your_file_path)
For Each f As FileInfo In dix.EnumerateFiles.
OrderByDescending(Function(o) o.Length)
' do stuff
Next

如果您认为您可能还需要过滤器(即仅复制自上次运行以来的文件),则使用 EnumerateFiles 而不是带有一些 linq 的 GetFiles()提高效率。在这种情况下,.NET 将评估您的过滤器,并仅返回与您的过滤器匹配的过滤器,而不是返回所有过滤器,以便您在代码中手动排除:

' process only TXT files in order of size
For Each f As FileInfo In dix.EnumerateFiles.
Where(Function(w) w.Name.EndsWith(".txt")).
OrderByDescending(Function(o) o.Length)
' do stuff
Next

关于.net - 使用 .NET System.IO File.Copy 按顺序复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36335521/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com