2014-02-26 63 views
0

我想知道如何将文件复制到包含子目录的目录中,并且它们包含一些修改日期的文件。通过datemodified复制目录和子目录中的文件的最快方法

现在我需要将所有这些文件复制到另一个目录。

这是我有哪些副本的所有文件和文件夹,但我只想要在从今天的日期前两天修改的文件夹中的文件。 (对于前:今天的日期是26-02-2014我需要的所有文件从24-02-2014和低于日期复制到另一个文件夹。)

Public Sub CopyDirectory(ByVal sourcePath As String, ByVal destinationPath As String) 
    Dim sourceDirectoryInfo As New System.IO.DirectoryInfo(sourcePath) 

    ' If the destination folder don't exist then create it 
    If Not System.IO.Directory.Exists(destinationPath) Then 
     System.IO.Directory.CreateDirectory(destinationPath) 
    End If 

    Dim fileSystemInfo As System.IO.FileSystemInfo 
    For Each fileSystemInfo In sourceDirectoryInfo.GetFileSystemInfos 
     Dim destinationFileName As String = 
      System.IO.Path.Combine(destinationPath, fileSystemInfo.Name) 

     ' Now check whether its a file or a folder and take action accordingly 
     If TypeOf fileSystemInfo Is System.IO.FileInfo Then 
      System.IO.File.Copy(fileSystemInfo.FullName, destinationFileName, True) 
     Else 
      ' Recursively call the mothod to copy all the neste folders 
      CopyDirectory(fileSystemInfo.FullName, destinationFileName) 
     End If 
    Next 
End Sub 

这是代码,只拷贝文件夹和dosent添加任何新的文件夹是在源路径:

Dim Source As New DirectoryInfo("C:\Users\username\Desktop\123") 
    Dim Target As New DirectoryInfo("C:\Users\username\Desktop\345") 

    Dim Files As FileInfo() = 
     (From [File] As FileInfo In Source.GetFiles("*", SearchOption.AllDirectories) 
     Where [File].LastWriteTime.Date.Equals(Date.Today.AddDays(-2))).ToArray 

    For Each [File] As FileInfo In Files 
     IO.File.Copy([File].FullName, 
        Path.Combine(Target.FullName, [File].Name), True) 
    Next [File] 

所以任何人都可以说如何实现这一目标?

回答

0

在c#中,File对象具有确定修改日期的方法。所以,你可以做这样的事情:

DateTime today = DateTime.Today; 
foreach (string filename in Directory.GetFiles("C:\\Users\\username\\Desktop\\123")) { 
    DateTime fileModDate = File.GetLastWriteTime(filename); 
    if (fileModDate < today.AddDays(-2)) { 
     File.Copy(filename, destination); 
    } 
} 
0

这里是回答您的查询的链接 - Copy the entire contents of a directory in C#

你的情况,你会做一个复制文件之前会添加一个条件。类似下面显示的那个或John在他的回答中使用的那个

if (File.GetLastWriteTime(path).CompareTo(DateTime.Today) <= -2) 
    { 
    ... 
    } 
相关问题