VB. NET Автосохранение нескольких файлов - PullRequest
0 голосов
/ 07 февраля 2020

Итак, я объявляю сохранить текстовый файл, не используя диалоговое окно сохранения файла.

Private Sub strt2_Click(sender As Object, e As EventArgs) Handles strt2.Click
        Directory.CreateDirectory("Result/Combolist")
        Using sw As System.IO.StreamWriter = New System.IO.StreamWriter("Result/Combolist/" & "\Email&Pass[" & time & "].txt")
            sw.WriteLine(rslt1.Text)
        End Using
    End Sub

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

1 Ответ

0 голосов
/ 07 февраля 2020

Похоже, вы пытаетесь использовать текущее время для различения guish имен файлов, что часто является разумным, поэтому, возможно, что-то подобное будет работать лучше:

Private Sub strt2_Click(sender As Object, e As EventArgs) Handles strt2.Click
    Dim timeStamp = DateTime.UtcNow.ToString("yyyyMMdd-HHmmss")
    Dim fileName = "Email&Pass[" & timeStamp & "].txt"
    Dim baseDir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
    Dim resultDir = (Directory.CreateDirectory(Path.Combine(baseDir, "Result\Combolist"))).FullName

    File.WriteAllText(Path.Combine(resultDir, fileName), rslt1.Text)

End Sub

Это Лучше всего использовать абсолютный путь при использовании файлов, так как в противном случае это может сбить с толку, когда он ищет где-то еще, где вы думаете, что он ищет.

Если вы тогда хотели получить файл с самым последним временем в его имя файла, вы можете сделать что-то вроде:

Imports System.IO
Imports System.Text.RegularExpressions

' other code here maybe '

Private Sub rslt_Click(sender As Object, e As EventArgs) Handles rslt.Click
    Dim baseDir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
    Dim resultDir = Path.Combine(baseDir, "Result\Combolist")

    Dim latestTimeStamp = ""
    Dim re As New Regex("^Email&Pass\[([0-9-]+)\]$")
    For Each f In Directory.EnumerateFiles(resultDir, "*.txt").Select(Function(g) Path.GetFileNameWithoutExtension(g))
        If re.IsMatch(f) Then
            Dim m = re.Match(f)
            If m.Groups(1).Captures(0).Value > latestTimeStamp Then
                latestTimeStamp = m.Groups(1).Captures(0).Value
            End If
        End If
    Next

    If latestTimeStamp <> String.Empty Then
        Dim latestFile = Path.Combine(resultDir, "Email&Pass[" & latestTimeStamp & "].txt")
        Process.Start(latestFile)
    End If

End Sub
...