Sdílet prostřednictvím


Podrobné pokyny: Práce se soubory a adresáři v jazyce Visual Basic

Tento návod obsahuje úvod k základům vstupně-výstupních operací v Visual Basic. Popisuje vytvoření malá aplikace, která uvádí a zkoumá textových souborů v adresáři. Pro každý vybraný text soubor aplikace obsahuje atributy souborů a první řádek obsahu. Existuje možnost zápisu do souboru protokolu.

Tento návod používá členy My.Computer.FileSystem Object, které jsou dostupné v Visual Basic. Další informace naleznete v tématu FileSystem. Na konci návod je ekvivalentní například za předpokladu, který používá třídy z System.IO oboru názvů.

Poznámka

Ve vašem počítači se pro některé z prvků uživatelského rozhraní aplikace Visual Studio mohou zobrazit jiné názvy a umístění, než jsou uvedena v následujících pokynech. Tyto prvky jsou určeny verzí aplikace Visual Studio a použitým nastavením. Další informace naleznete v tématu Visual Studio, nastavení.

Jak vytvořit nový projekt

  1. V menu Soubor klikněte na příkaz Nový Projekt.

    Zobrazí se dialogové okno Nový projekt.

  2. V Nainstalované šablony podokně rozbalte Visual Basica klepněte na tlačítko Windows. V šablony střední, klepněte v podokně Aplikace model Windows Forms.

  3. V název zadejte FileExplorer nastavit název projektu a klepněte na tlačítko OK.

    Visual Studio přidá do projektu Průzkumník řešení a otevře designer pro model Windows Forms.

  4. Přidejte ovládací prvky z následující tabulky do formuláře a nastavte odpovídající hodnoty jejich vlastnosti.

    Control

    Vlastnost

    Hodnota

    ListBox

    Název

    filesListBox

    Tlačítko

    Název

    Text

    browseButton

    Procházet

    Tlačítko

    Název

    Text

    examineButton

    Examine

    CheckBox

    Název

    Text

    saveCheckBox

    Uložit výsledky

    FolderBrowserDialog

    Název

    FolderBrowserDialog1

Vyberte složku a seznam souborů ve složce

  1. Vytvoření Click obslužnou rutinu události pro browseButton poklepáním na ovládací prvek ve formuláři. Otevře se editor kódu.

  2. Přidejte následující kód Click obslužnou rutinu události.

    If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
        ' List files in the folder.
        ListFiles(FolderBrowserDialog1.SelectedPath)
    End If
    

    FolderBrowserDialog1.ShowDialog Volání otevře Vyhledat složku dialogové okno. Poté, co uživatel klepne na OK, SelectedPath vlastnost je odeslána jako argument ListFiles Metoda, která je přidána v dalším kroku.

  3. Přidejte následující ListFiles metody.

    Private Sub ListFiles(ByVal folderPath As String)
        filesListBox.Items.Clear()
    
        Dim fileNames = My.Computer.FileSystem.GetFiles(
            folderPath, FileIO.SearchOption.SearchTopLevelOnly, "*.txt")
    
        For Each fileName As String In fileNames
            filesListBox.Items.Add(fileName)
        Next
    End Sub
    

    Tento kód nejprve vymaže seznam.

    GetFiles Metoda poté načte sada řetězců, jeden pro každý soubor v adresáři. GetFiles Metoda přijímá argument vzoru hledání načíst soubory vyhovující konkrétní vzorek. V tomto příkladu jsou vráceny pouze soubory s příponou TXT.

    Řetězce, které jsou vráceny GetFiles metody jsou potom přidány do seznam.

  4. Spusťte aplikaci. Klepněte procházení tlačítko. V Vyhledat složku dialogové okno, přejděte do složky obsahující soubory TXT, vyberte složku a klepněte OK.

    ListBox Obsahuje seznam souborů s příponou TXT do vybrané složky.

  5. Ukončete spuštěné aplikace.

Získat atributy souboru a obsah z textového souboru

  1. Vytvoření Click obslužnou rutinu události pro examineButton poklepáním na ovládací prvek ve formuláři.

  2. Přidejte následující kód Click obslužnou rutinu události.

    If filesListBox.SelectedItem Is Nothing Then
        MessageBox.Show("Please select a file.")
        Exit Sub
    End If
    
    ' Obtain the file path from the list box selection.
    Dim filePath = filesListBox.SelectedItem.ToString
    
    ' Verify that the file was not removed since the
    ' Browse button was clicked.
    If My.Computer.FileSystem.FileExists(filePath) = False Then
        MessageBox.Show("File Not Found: " & filePath)
        Exit Sub
    End If
    
    ' Obtain file information in a string.
    Dim fileInfoText As String = GetTextForOutput(filePath)
    
    ' Show the file information.
    MessageBox.Show(fileInfoText)
    

    Kód ověří ve vybrané položce ListBox. Poté získá položka cesty k souboru z ListBox. FileExists Metoda slouží ke kontrole, zda soubor stále existuje.

    Cesta k souboru je odeslána jako argument GetTextForOutput Metoda, která je přidána v dalším kroku. Tato metoda vrátí řetězec obsahující informace o souboru. Informace o souboru se zobrazí v MessageBox.

  3. Přidejte následující GetTextForOutput metody.

    Private Function GetTextForOutput(ByVal filePath As String) As String
        ' Verify that the file exists.
        If My.Computer.FileSystem.FileExists(filePath) = False Then
            Throw New Exception("File Not Found: " & filePath)
        End If
    
        ' Create a new StringBuilder, which is used
        ' to efficiently build strings.
        Dim sb As New System.Text.StringBuilder()
    
        ' Obtain file information.
        Dim thisFile As System.IO.FileInfo = My.Computer.FileSystem.GetFileInfo(filePath)
    
        ' Add file attributes.
        sb.Append("File: " & thisFile.FullName)
        sb.Append(vbCrLf)
        sb.Append("Modified: " & thisFile.LastWriteTime.ToString)
        sb.Append(vbCrLf)
        sb.Append("Size: " & thisFile.Length.ToString & " bytes")
        sb.Append(vbCrLf)
    
        ' Open the text file.
        Dim sr As System.IO.StreamReader =
            My.Computer.FileSystem.OpenTextFileReader(filePath)
    
        ' Add the first line from the file.
        If sr.Peek() >= 0 Then
            sb.Append("First Line: " & sr.ReadLine())
        End If
        sr.Close()
    
        Return sb.ToString
    End Function
    

    Kód používá GetFileInfo způsob získání souboru parametrů. Parametry souboru jsou přidány do StringBuilder.

    OpenTextFileReader Metoda načte obsah do souboru StreamReader. První řádek obsahu se získá z StreamReader a doplňuje StringBuilder.

  4. Spusťte aplikaci. Klepněte na tlačítko procházenía vyhledejte složku obsahující soubory s příponou TXT. Klikněte na tlačítko OK.

    Vyberte soubor v ListBoxa klepněte na tlačítko Kontrola. A MessageBox zobrazuje informace o souboru.

  5. Ukončete spuštěné aplikace.

Přidat položku protokolu

  1. Přidejte následující kód na konec examineButton_Click obslužnou rutinu události.

    If saveCheckBox.Checked = True Then
        ' Place the log file in the same folder as the examined file.
        Dim logFolder As String = My.Computer.FileSystem.GetFileInfo(filePath).DirectoryName
        Dim logFilePath = My.Computer.FileSystem.CombinePath(logFolder, "log.txt")
    
        Dim logText As String = "Logged: " & Date.Now.ToString &
            vbCrLf & fileInfoText & vbCrLf & vbCrLf
    
        ' Append text to the log file.
        My.Computer.FileSystem.WriteAllText(logFilePath, logText, append:=True)
    End If
    

    Kód nastaví cestu k souboru protokolu umístit soubor protokolu ve stejném adresáři jako vybraný soubor. Text položky protokolu nastavena na aktuální datum a čas a informace o souboru.

    WriteAllText Metodou s append argument nastaven na hodnotu True, slouží k vytvoření položky protokolu.

  2. Spusťte aplikaci. Procházet do textového souboru, vyberte jej ListBox, vyberte Uložit výsledky políčko a klepněte na tlačítko Kontrola. Ověřte, že položka protokolu zapsána log.txt souboru.

  3. Ukončete spuštěné aplikace.

Aktuální adresář

  1. Vytvořte obslužnou rutinu událost pro Form1_Load poklepáním na formulář.

  2. Přidejte následující kód do obslužné rutiny události.

    ' Set the default directory of the folder browser to the current directory.
    FolderBrowserDialog1.SelectedPath = My.Computer.FileSystem.CurrentDirectory
    

    Výchozím adresářem složka prohlížeče tento kód nastaví aktuální adresář.

  3. Spusťte aplikaci. Po klepnutí na tlačítko Procházet prvním Vyhledat složku do aktuálního adresáře, zobrazí se dialogové okno.

  4. Ukončete spuštěné aplikace.

Povolit ovládací prvky

  1. Přidejte následující SetEnabled metody.

    Private Sub SetEnabled()
        Dim anySelected As Boolean =
            (filesListBox.SelectedItem IsNot Nothing)
    
        examineButton.Enabled = anySelected
        saveCheckBox.Enabled = anySelected
    End Sub
    

    SetEnabled Metoda povoluje nebo zakazuje ovládacích prvků v závislosti na tom, zda je položka vybraná v ListBox.

  2. Vytvoření SelectedIndexChanged obslužnou rutinu události pro filesListBox poklepáním ListBox ovládacího prvku ve formuláři.

  3. Přidat volání SetEnabled v nové filesListBox_SelectedIndexChanged obslužnou rutinu události.

  4. Přidat volání SetEnabled na konci browseButton_Click obslužnou rutinu události.

  5. Přidat volání SetEnabled na konci Form1_Load obslužnou rutinu události.

  6. Spusťte aplikaci. Uložit výsledky políčko a Kontrola tlačítka jsou zakázány, pokud není zaškrtnuté položky ListBox.

Celý příklad použití My.Computer.FileSystem

Následuje příklad úplné.


    ' This example uses members of the My.Computer.FileSystem
    ' object, which are available in Visual Basic.

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Set the default directory of the folder browser to the current directory.
        FolderBrowserDialog1.SelectedPath = My.Computer.FileSystem.CurrentDirectory

        SetEnabled()
    End Sub

    Private Sub browseButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles browseButton.Click
        If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
            ' List files in the folder.
            ListFiles(FolderBrowserDialog1.SelectedPath)
        End If
        SetEnabled()
    End Sub

    Private Sub ListFiles(ByVal folderPath As String)
        filesListBox.Items.Clear()

        Dim fileNames = My.Computer.FileSystem.GetFiles(
            folderPath, FileIO.SearchOption.SearchTopLevelOnly, "*.txt")

        For Each fileName As String In fileNames
            filesListBox.Items.Add(fileName)
        Next
    End Sub

    Private Sub examineButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles examineButton.Click
        If filesListBox.SelectedItem Is Nothing Then
            MessageBox.Show("Please select a file.")
            Exit Sub
        End If

        ' Obtain the file path from the list box selection.
        Dim filePath = filesListBox.SelectedItem.ToString

        ' Verify that the file was not removed since the
        ' Browse button was clicked.
        If My.Computer.FileSystem.FileExists(filePath) = False Then
            MessageBox.Show("File Not Found: " & filePath)
            Exit Sub
        End If

        ' Obtain file information in a string.
        Dim fileInfoText As String = GetTextForOutput(filePath)

        ' Show the file information.
        MessageBox.Show(fileInfoText)

        If saveCheckBox.Checked = True Then
            ' Place the log file in the same folder as the examined file.
            Dim logFolder As String = My.Computer.FileSystem.GetFileInfo(filePath).DirectoryName
            Dim logFilePath = My.Computer.FileSystem.CombinePath(logFolder, "log.txt")

            Dim logText As String = "Logged: " & Date.Now.ToString &
                vbCrLf & fileInfoText & vbCrLf & vbCrLf

            ' Append text to the log file.
            My.Computer.FileSystem.WriteAllText(logFilePath, logText, append:=True)
        End If
    End Sub

    Private Function GetTextForOutput(ByVal filePath As String) As String
        ' Verify that the file exists.
        If My.Computer.FileSystem.FileExists(filePath) = False Then
            Throw New Exception("File Not Found: " & filePath)
        End If

        ' Create a new StringBuilder, which is used
        ' to efficiently build strings.
        Dim sb As New System.Text.StringBuilder()

        ' Obtain file information.
        Dim thisFile As System.IO.FileInfo = My.Computer.FileSystem.GetFileInfo(filePath)

        ' Add file attributes.
        sb.Append("File: " & thisFile.FullName)
        sb.Append(vbCrLf)
        sb.Append("Modified: " & thisFile.LastWriteTime.ToString)
        sb.Append(vbCrLf)
        sb.Append("Size: " & thisFile.Length.ToString & " bytes")
        sb.Append(vbCrLf)

        ' Open the text file.
        Dim sr As System.IO.StreamReader =
            My.Computer.FileSystem.OpenTextFileReader(filePath)

        ' Add the first line from the file.
        If sr.Peek() >= 0 Then
            sb.Append("First Line: " & sr.ReadLine())
        End If
        sr.Close()

        Return sb.ToString
    End Function

    Private Sub filesListBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles filesListBox.SelectedIndexChanged
        SetEnabled()
    End Sub

    Private Sub SetEnabled()
        Dim anySelected As Boolean =
            (filesListBox.SelectedItem IsNot Nothing)

        examineButton.Enabled = anySelected
        saveCheckBox.Enabled = anySelected
    End Sub

Celý příklad použití System.IO

Ekvivalentní následující příklad používá třídy z System.IO názvů místo My.Computer.FileSystem objektů.


' This example uses classes from the System.IO namespace.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ' Set the default directory of the folder browser to the current directory.
    FolderBrowserDialog1.SelectedPath =
        System.IO.Directory.GetCurrentDirectory()

    SetEnabled()
End Sub

Private Sub browseButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles browseButton.Click
    If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
        ' List files in the folder.
        ListFiles(FolderBrowserDialog1.SelectedPath)
        SetEnabled()
    End If
End Sub

Private Sub ListFiles(ByVal folderPath As String)
    filesListBox.Items.Clear()

    Dim fileNames As String() =
        System.IO.Directory.GetFiles(folderPath,
            "*.txt", System.IO.SearchOption.TopDirectoryOnly)

    For Each fileName As String In fileNames
        filesListBox.Items.Add(fileName)
    Next
End Sub

Private Sub examineButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles examineButton.Click
    If filesListBox.SelectedItem Is Nothing Then
        MessageBox.Show("Please select a file.")
        Exit Sub
    End If

    ' Obtain the file path from the list box selection.
    Dim filePath = filesListBox.SelectedItem.ToString

    ' Verify that the file was not removed since the
    ' Browse button was clicked.
    If System.IO.File.Exists(filePath) = False Then
        MessageBox.Show("File Not Found: " & filePath)
        Exit Sub
    End If

    ' Obtain file information in a string.
    Dim fileInfoText As String = GetTextForOutput(filePath)

    ' Show the file information.
    MessageBox.Show(fileInfoText)

    If saveCheckBox.Checked = True Then
        ' Place the log file in the same folder as the examined file.
        Dim logFolder As String =
            System.IO.Path.GetDirectoryName(filePath)
        Dim logFilePath = System.IO.Path.Combine(logFolder, "log.txt")

        ' Append text to the log file.
        Dim logText As String = "Logged: " & Date.Now.ToString &
            vbCrLf & fileInfoText & vbCrLf & vbCrLf

        System.IO.File.AppendAllText(logFilePath, logText)
    End If
End Sub

Private Function GetTextForOutput(ByVal filePath As String) As String
    ' Verify that the file exists.
    If System.IO.File.Exists(filePath) = False Then
        Throw New Exception("File Not Found: " & filePath)
    End If

    ' Create a new StringBuilder, which is used
    ' to efficiently build strings.
    Dim sb As New System.Text.StringBuilder()

    ' Obtain file information.
    Dim thisFile As New System.IO.FileInfo(filePath)

    ' Add file attributes.
    sb.Append("File: " & thisFile.FullName)
    sb.Append(vbCrLf)
    sb.Append("Modified: " & thisFile.LastWriteTime.ToString)
    sb.Append(vbCrLf)
    sb.Append("Size: " & thisFile.Length.ToString & " bytes")
    sb.Append(vbCrLf)

    ' Open the text file.
    Dim sr As System.IO.StreamReader =
        System.IO.File.OpenText(filePath)

    ' Add the first line from the file.
    If sr.Peek() >= 0 Then
        sb.Append("First Line: " & sr.ReadLine())
    End If
    sr.Close()

    Return sb.ToString
End Function

Private Sub filesListBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles filesListBox.SelectedIndexChanged
    SetEnabled()
End Sub

Private Sub SetEnabled()
    Dim anySelected As Boolean =
        (filesListBox.SelectedItem IsNot Nothing)

    examineButton.Enabled = anySelected
    saveCheckBox.Enabled = anySelected
End Sub

Viz také

Úkoly

Podrobné pokyny: Manipulace pomocí souborů.NET Framework metody (Visual Basic)

Odkaz

System.IO

FileSystem

CurrentDirectory

Historie změn

Datum

Poslední dokumenty

Důvod

Prosinec 2010

Revidované příklady a návody.

rozšíření

Srpen 2010

Aktualizované a pevné ukázkový kód.

Názory zákazníků