2013-04-10 54 views
1

使用下面的代碼我試圖刪除閃存驅動器上的文件夾內的特定文件,然後將剩餘的文件複製到單獨的文件夾中。當程序運行時,我啓動按鈕來執行此操作,程序將刪除過去一年內未修改過的文件,但不會繼續提取剩餘的文件並將它們放入單獨的文件夾中。刪除特定的文件,然後將它們解壓縮到另一個文件夾中

有誰知道爲什麼?

Imports System.IO 

Public Class frmExtractionator 

    Dim txtFiles1 As Control 

    Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click 

     Dim sourceDirectory As String = "E:\CopierFolderforTestDriveCapstone" 
     Dim archiveDirectory As String = "E:\FilesExtracted" 

     Try 
      DeleteUnmodifiedFiles(sourceDirectory, 365) 

      Dim txtFiles = Directory.EnumerateFiles(sourceDirectory) 

      If (Not System.IO.Directory.Exists(archiveDirectory)) Then 
       System.IO.Directory.CreateDirectory(archiveDirectory) 
      End If 

      For Each currentFileLoc As String In txtFiles 
       Dim fileName = currentFileLoc.Substring(sourceDirectory.Length + 1) 
       File.Move(currentFileLoc, Path.Combine(archiveDirectory, fileName)) 
      Next 
     Catch eT As Exception 
      Console.WriteLine(eT.Message) 
     End Try 
    End Sub 

    Private Sub DeleteUnmodifiedFiles(ByVal directoryName As String, ByVal modificationThresholdDays As Integer) 
     Dim folder As New DirectoryInfo(directoryName) 
     Dim thresholdDate As Date 
     Dim wasModifiedSinceThreshold As Boolean 
     For Each file As FileInfo In folder.GetFiles 
      thresholdDate = DateTime.Now().AddDays(-1 * modificationThresholdDays) 
      wasModifiedSinceThreshold = (file.LastWriteTime > thresholdDate) 
      If (Not wasModifiedSinceThreshold) Then file.Delete() 
     Next 
     MessageBox.Show("Deleting Files") 
    End Sub 
End Class 
+1

作爲第一個步驟我會添加** Option Strict On **並設置一些調試斷點,以檢查哪個命令不起作用 – Amegon 2013-04-10 15:49:17

回答

1

這將刪除尚未修改了一年,然後將所有剩餘文件移動到目標目錄中的源目錄中的任何文件...

Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click 
    Dim fileListA() As String 
    fileListA = (IO.Directory.GetFiles("C:\Scource_Directory")) 
    For Each i As String In fileListA 
     If (IO.File.GetLastWriteTime(i).ToShortDateString.Substring(6)) < (CType(DateTime.Now.Year.ToString, Integer) - 1) Then 
      IO.File.Delete(i) 
     End If 
    Next 
    Dim fileListB() As String 
    fileListB = (IO.Directory.GetFiles("C:\Scource_Directory")) 
    For Each i As String In fileListB 
     IO.File.Move(i, "Destination_Directory") 
    Next 
End Sub 
相關問題