2011-06-29 79 views
0

フォルダーをバックアップするプログラムを作成しようとしています。私は5つのフォルダを言うつもりです、そして、それが再びバックアップされるならば、私は5つのフォルダの中で最も古いものが削除され、新しいフォルダがそこに置かれたいと思います。フォルダー内で最も古いフォルダーを見つける方法vb.net

にはどうすれば役に立つことができSystem.IO.DirectoryInfoを使用して、ディレクトリ

答えて

1

で最古のフォルダを見つけるだろう。

具体的にはCreationTimeプロパティとEnumerateDirectoriesメソッドです。ここで

は、LINQを使用してEnumerateDirectories法に修正されたサンプルである:ここでは

' Create a DirectoryInfo of the Program Files directory. 
Dim dirPrograms As New DirectoryInfo("c:\program files") 

' LINQ query for oldest directory 
Dim dir = (From dir In dirPrograms.EnumerateDirectories()).Min(function (o) o.CreationTime).FirstOrDefault() 

If Not IsNothing(dir) Then 
' perform rest of function 
End If 

は、フォルダ内の最古のディレクトリを取得するための非LINQバージョンです:

Dim di As New DirectoryInfo("C:\program files") 
    Dim dirs() as DirectoryInfo = di.GetDirectories() 
    Dim creationTime as DateTime = DateTime.Now 
    Dim oldestDir As DirectoryInfo 

    For Each dir As DirectoryInfo In dirs 
     If DateTime.Compare(dir.CreationTime(), creationTime) < 0 Then 
      oldestDir = dir 
      creationTime = dir.CreationTime() 
     End If 
    Next 
+0

@ash基本的に、私のフォルダお互いの時間内に作成されます。 'directory.lastmodifieddate.oldest delete' – Kuzon

+0

@Kuzon私は非LINQバージョンを追加しました。私が知る限り、これはディレクトリ内の最も古いディレクトリを取得する最も良い方法です。 –

+0

@Ashありがとう、私はVbにはまだまだ新しく、 'creationTime = f.CreationTime()'エラーを修正するにはどうすればいいですか? 'f'は宣言されていません。保護レベルのためにアクセス不能になる可能性があります...文字列として宣言しますか? – Kuzon

関連する問題