gebeurtenis
17 mrt, 21 - 21 mrt, 10
Neem deel aan de meetup-serie om schaalbare AI-oplossingen te bouwen op basis van praktijkgebruiksvoorbeelden met collega-ontwikkelaars en experts.
Nu registrerenDeze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
Deze procedure biedt een inleiding tot de basisprincipes van bestands-I/O in Visual Basic. Hierin wordt beschreven hoe u een kleine toepassing maakt waarin tekstbestanden in een map worden vermeld en onderzocht. Voor elk geselecteerd tekstbestand biedt de toepassing bestandskenmerken en de eerste regel inhoud. Er is een optie om informatie naar een logboekbestand te schrijven.
In dit scenario worden leden van de My.Computer.FileSystem Object
, die beschikbaar zijn in Visual Basic, gebruikt. Zie FileSystem voor meer informatie. Aan het einde van het scenario wordt een gelijkwaardig voorbeeld gegeven waarin klassen uit de System.IO naamruimte worden gebruikt.
Notitie
Mogelijk worden op uw computer verschillende namen of locaties weergegeven voor sommige elementen van de Visual Studio-gebruikersinterface in de volgende instructies. De Visual Studio-editie die u hebt en de instellingen die u gebruikt, bepalen deze elementen. Zie Personalizing the IDE (Personalizing the IDE) voor meer informatie.
Klik in het menu Bestand op Nieuw project.
Het dialoogvenster Nieuw project wordt weergegeven.
Vouw Visual Basic uit in het deelvenster Geïnstalleerde sjablonen en klik vervolgens op Windows. Klik in het deelvenster Sjablonen in het midden op Windows Forms-toepassing.
Typ in het vak Naam om de projectnaam in te stellen en klik op OK.FileExplorer
Visual Studio voegt het project toe aan Solution Explorer en de Windows Forms Designer wordt geopend.
Voeg de besturingselementen in de volgende tabel toe aan het formulier en stel de bijbehorende waarden voor hun eigenschappen in.
Besturingselement | Eigenschappen | Weergegeven als |
---|---|---|
Listbox | Naam | filesListBox |
Knop | Naam Text |
browseButton Bladeren |
Knop | Naam Text |
examineButton Onderzoeken |
Selectievakje | Naam Text |
saveCheckBox Resultaten opslaan |
FolderBrowserDialog | Naam | FolderBrowserDialog1 |
Maak een Click
gebeurtenis-handler voor browseButton
door te dubbelklikken op het besturingselement in het formulier. De Code-editor wordt geopend.
Voeg de volgende code toe aan de Click
gebeurtenis-handler.
If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
' List files in the folder.
ListFiles(FolderBrowserDialog1.SelectedPath)
End If
Het FolderBrowserDialog1.ShowDialog
dialoogvenster Zoeken naar map wordt geopend. Nadat de gebruiker op OK heeft geklikt, wordt de SelectedPath eigenschap verzonden als een argument naar de ListFiles
methode, die in de volgende stap wordt toegevoegd.
Voeg de volgende ListFiles
methode toe.
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
Met deze code wordt eerst de keuzelijst gewist.
De GetFiles methode haalt vervolgens een verzameling tekenreeksen op, één voor elk bestand in de map. De GetFiles
methode accepteert een zoekpatroonargument om bestanden op te halen die overeenkomen met een bepaald patroon. In dit voorbeeld worden alleen bestanden met de extensie .txt geretourneerd.
De tekenreeksen die door de GetFiles
methode worden geretourneerd, worden vervolgens toegevoegd aan de keuzelijst.
Voer de toepassing uit. Klik op de knop Bladeren . Blader in het dialoogvenster Map zoeken naar een map met .txt bestanden en selecteer de map en klik op OK.
De ListBox
lijst bevat een lijst met .txt bestanden in de geselecteerde map.
Stop met het uitvoeren van de toepassing.
Maak een Click
gebeurtenis-handler voor examineButton
door te dubbelklikken op het besturingselement in het formulier.
Voeg de volgende code toe aan de Click
gebeurtenis-handler.
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)
De code controleert of een item is geselecteerd in de ListBox
. Vervolgens wordt de vermelding van het bestandspad opgehaald uit de ListBox
. De FileExists methode wordt gebruikt om te controleren of het bestand nog bestaat.
Het bestandspad wordt als argument verzonden naar de GetTextForOutput
methode, die in de volgende stap wordt toegevoegd. Deze methode retourneert een tekenreeks die bestandsgegevens bevat. De bestandsgegevens worden weergegeven in een Berichtenvak.
Voeg de volgende GetTextForOutput
methode toe.
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
De code gebruikt de GetFileInfo methode om bestandsparameters te verkrijgen. De bestandsparameters worden toegevoegd aan een StringBuilder.
De OpenTextFileReader methode leest de bestandsinhoud in een StreamReader. De eerste regel van de inhoud wordt verkregen van de StreamReader
en wordt toegevoegd aan de StringBuilder
.
Voer de toepassing uit. Klik op Bladeren en blader naar een map met .txt bestanden. Klik op OK.
Selecteer een bestand in de ListBox
map en klik vervolgens op Onderzoeken. A MessageBox
geeft de bestandsgegevens weer.
Stop met het uitvoeren van de toepassing.
Voeg de volgende code toe aan het einde van de examineButton_Click
gebeurtenis-handler.
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
Met de code wordt het pad naar het logboekbestand ingesteld om het logboekbestand in dezelfde map te plaatsen als het geselecteerde bestand. De tekst van de logboekvermelding is ingesteld op de huidige datum en tijd, gevolgd door de bestandsgegevens.
De WriteAllText methode, waarbij het append
argument is ingesteld op True
, wordt gebruikt om de logboekvermelding te maken.
Voer de toepassing uit. Blader naar een tekstbestand, selecteer het in de ListBox
, schakel het selectievakje Resultaten opslaan in en klik op Onderzoeken. Controleer of de logboekvermelding naar het log.txt
bestand is geschreven.
Stop met het uitvoeren van de toepassing.
Maak een gebeurtenis-handler voor Form1_Load
door te dubbelklikken op het formulier.
Voeg de volgende code toe aan de gebeurtenis-handler.
' Set the default directory of the folder browser to the current directory.
FolderBrowserDialog1.SelectedPath = My.Computer.FileSystem.CurrentDirectory
Met deze code wordt de standaardmap van de mapbrowser ingesteld op de huidige map.
Voer de toepassing uit. Wanneer u de eerste keer op Bladeren klikt, wordt het dialoogvenster Bladeren naar map geopend in de huidige map.
Stop met het uitvoeren van de toepassing.
Voeg de volgende SetEnabled
methode toe.
Private Sub SetEnabled()
Dim anySelected As Boolean =
(filesListBox.SelectedItem IsNot Nothing)
examineButton.Enabled = anySelected
saveCheckBox.Enabled = anySelected
End Sub
Met de SetEnabled
methode worden besturingselementen ingeschakeld of uitgeschakeld, afhankelijk van of een item is geselecteerd in de ListBox
.
Maak een SelectedIndexChanged
gebeurtenis-handler voor filesListBox
door te dubbelklikken op het ListBox
besturingselement in het formulier.
Voeg een aanroep toe aan SetEnabled
de nieuwe filesListBox_SelectedIndexChanged
gebeurtenis-handler.
Voeg een aanroep toe aan SetEnabled
het einde van de browseButton_Click
gebeurtenis-handler.
Voeg een aanroep toe aan SetEnabled
het einde van de Form1_Load
gebeurtenis-handler.
Voer de toepassing uit. Het selectievakje Resultaten opslaan en de knop Onderzoeken zijn uitgeschakeld als een item niet is geselecteerd in het ListBox
item.
Hieronder volgt het volledige voorbeeld.
' 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
In het volgende equivalente voorbeeld worden klassen uit de System.IO naamruimte gebruikt in plaats van objecten te gebruiken My.Computer.FileSystem
.
' 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
.NET-feedback
.NET is een open source project. Selecteer een koppeling om feedback te geven:
gebeurtenis
17 mrt, 21 - 21 mrt, 10
Neem deel aan de meetup-serie om schaalbare AI-oplossingen te bouwen op basis van praktijkgebruiksvoorbeelden met collega-ontwikkelaars en experts.
Nu registrerenTraining
Module
Werken met bestanden en mappen in een .NET-app - Training
Meer informatie over het gebruik van .NET, C# en System.IO met mappen, paden, bestanden en het bestandssysteem.
Documentatie
Procedure: Bestandspaden parseren - Visual Basic
Meer informatie over: Bestandspaden parseren in Visual Basic
Procedure: Een bestand maken - Visual Basic
Meer informatie over: Een bestand maken in Visual Basic
Procedure: Bestanden zoeken met een specifiek patroon - Visual Basic
Meer informatie over: Bestanden zoeken met een specifiek patroon in Visual Basic