我想只有在不列表中存在的文件執行文件刪除,但。在vb.net,我不能讓我的DirectoryInfo功能才能正常工作
實施例:
Dim FilesToKeep As List(Of String) = MyFunctionThatPopulatesTheList
的FilesToKeep列表包括文件名。
這裏就是我有麻煩,因爲這些條款功能把我關大時間。
Dim filesToDelete
filesToDelete = New DirectoryInfo(FilePath) _
.GetFiles("*", SearchOption.AllDirectories) _
.Where(Function(f) Not f.Attributes.HasFlag(FileAttributes.Hidden)) _
.Where(Function(f) Not FilesToKeep.ToString.Contains(f.Name)) _
.[Select](Function(f) New FileCollectionForDelete(f)).ToArray()
我想要做的兩件事情,如果你看看DirectoryInfo函數的底部兩行。我只想要FilesToKeep列表中不存在的文件。第二,只是幫助我存儲有關文件的信息。
但因爲它的立場,filesToDelete返回的每一個文件。
謝謝你的幫助。
===========編輯=============
的意見後,我給它一個鏡頭,但好奇,如果任何人都可以提供有關意見這個功能的穩定性。
首先,我創建了一個名爲FilesToKeep2
Dim FilesToKeep2 As String = String.Join(",", FilesTOKeep.ToArray())
另一個變量,我離開了我的功能究竟是怎麼回事,因爲它不是比較整個路徑,注意(f.Name)。
所以現在這似乎能正常工作,但擔心的疑難雜症是以後。
這個函數能夠像逐個遍歷每個函數一樣穩定嗎?
嘗試刪除Where子句,然後逐個添加它們並查看所得結果。 –
是不是完整路徑與文件名問題的問題?也許'FilesToKeep'具有完整路徑的文件名,而'f.Name'只有文件名? –
@KonradKokosa好主意......現在就來試試吧。 – user1447679