Member 10628309 Ответов: 2

Как удалить файл в VB.NET когда часть имени файла неизвестна


У меня есть файл, который я сохраняю в папке для архивирования, но когда я загружаю новый файл замены, я хочу удалить старый файл. Проблема была бы простой, но часть имени файла-это дата в формате гггг-ММ-ДД, например: PHRF2019-02-26List.txt и старая дата будет неизвестна. Я подумал, что могу использовать дикие карты, например, PHRF*List.txt и используйте файл.Удалить, но файл.Удаление не будет принимать дикие карты. Я могу придумать несколько способов сделать это, но все они очень сложны. Я уверен, что есть простой способ сделать это, и я готов поспорить, что один из вас знает очень простой способ.

Что я уже пробовал:

Файл.Удалить("C:\Stuff\MoreStuff\PHRF*List.txt")

2 Ответов

Рейтинг:
1

OriginalGriff

Используйте класс Directory, чтобы получить список файлов и удалить их по отдельности.
Попробовать это:

Private Shared Sub DeleteMatching(ByVal matchPath As String)
    Dim lastSlash As Integer = matchPath.LastIndexOf("\"c)
    Dim path As String = matchPath.Substring(0, lastSlash)
    Dim match As String = matchPath.Substring(lastSlash + 1)
    Dim files As String() = Directory.GetFiles(path, match)

    For Each file As String In files
        File.Delete(file)
    Next
End Sub
(Обычно я использую методы класса Path для извлечения пути и имени файла, но он не работает с подстановочными знаками)


Member 10628309

Спасибо за Ваш быстрый ответ. Я не ответил раньше, потому что до сих пор не могу использовать предложенный вами код. Но я тоже не собираюсь его выбрасывать

Рейтинг:
0

BellaKratos

Я предлагаю вам сначала поместить имя файла, который вы заархивировали, в файл .txt, если вы собираетесь удалять его каждый раз, когда архивируете

sub save_name()
        Dim filenewname = "PHRF2019-02-26List.txt"
        System.IO.File.WriteAllText(Application.StartupPath & "\txtarchive.txt", "") 'clean content file
        Dim file As System.IO.StreamWriter
        file = My.Computer.FileSystem.OpenTextFileWriter(Application.StartupPath &          "\txtarchive.txt", True)
        file.Write(filenewname) 'write new filename content
        file.Close()
end sub


так что вы можете легко удалить их впоследствии:

sub deletearchived()
        Dim stringss As String
        Dim reader As New StreamReader(Application.StartupPath & "\txtarchive.txt")
        stringss = reader.ReadToEnd
        MsgBox(stringss) 'test content of the txt file
        reader.Close()
        File.Delete("C:\Stuff\MoreStuff\" & stringss) 'delete the file
end sub


тот самый txtarchive.txt поскольку мой пример файла должен быть внутри вашей папки отладки


Member 10628309

Спасибо за Ваш быстрый ответ. Я еще не смог использовать ваш код, но он может пригодиться, когда я решу связанную с ним проблему.