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
V menu Soubor klikněte na příkaz Nový Projekt.
Zobrazí se dialogové okno Nový projekt.
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.
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.
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
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.
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.
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.
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.
Ukončete spuštěné aplikace.
Získat atributy souboru a obsah z textového souboru
Vytvoření Click obslužnou rutinu události pro examineButton poklepáním na ovládací prvek ve formuláři.
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.
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.
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.
Ukončete spuštěné aplikace.
Přidat položku protokolu
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.
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.
Ukončete spuštěné aplikace.
Aktuální adresář
Vytvořte obslužnou rutinu událost pro Form1_Load poklepáním na formulář.
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ář.
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.
Ukončete spuštěné aplikace.
Povolit ovládací prvky
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.
Vytvoření SelectedIndexChanged obslužnou rutinu události pro filesListBox poklepáním ListBox ovládacího prvku ve formuláři.
Přidat volání SetEnabled v nové filesListBox_SelectedIndexChanged obslužnou rutinu události.
Přidat volání SetEnabled na konci browseButton_Click obslužnou rutinu události.
Přidat volání SetEnabled na konci Form1_Load obslužnou rutinu události.
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
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ů |