Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez az útmutató bemutatja a Visual Basic fájl I/O-jának alapjait. Leírja, hogyan hozhat létre egy kis alkalmazást, amely felsorolja és megvizsgálja a könyvtárban lévő szövegfájlokat. Az alkalmazás minden kijelölt szövegfájlhoz fájlattribútumokat és az első tartalomsort biztosít. Lehetőség van arra, hogy adatokat írjon egy naplófájlba.
Ez az útmutató a My.Computer.FileSystem Object tagokat használja, amelyek elérhetők a Visual Basicben. További információért lásd a FileSystem jelű részt. Az útmutató végén egy egyenértékű példa látható, amely a System.IO névtér osztályait használja.
Megjegyzés:
Előfordulhat, hogy a számítógép különböző neveket vagy helyeket jelenít meg a Visual Studio felhasználói felületének egyes elemeihez az alábbi utasításokban. Ezeket az elemeket a Visual Studio-kiadás és a használt beállítások határozzák meg. További információért lásd: A fejlesztői környezet személyre szabása.
A projekt létrehozása
A Fájl menüben kattintson az Új projekt gombra.
Megjelenik a New project (Új projekt) párbeszédpanel.
A Telepített sablonok panelen bontsa ki a Visual Basic elemet, majd kattintson a Windows elemre. A középen lévő Sablonok panelen kattintson a Windows Forms-alkalmazás elemre.
A Név mezőbe írja be
FileExplorera projekt nevét, majd kattintson az OK gombra.A Visual Studio hozzáadja a projektet a Megoldáskezelőhöz, és megnyílik a Windows Forms Designer.
Adja hozzá az alábbi táblázatban szereplő vezérlőket az űrlaphoz, és állítsa be a tulajdonságok megfelelő értékeit.
Vezérlő Ingatlan Érték ListBox Név filesListBoxgomb Név
SzövegbrowseButton
Tallózásgomb Név
SzövegexamineButton
Megvizsgáljelölőnégyzet Név
SzövegsaveCheckBox
Eredmények mentéseFolderBrowserDialog Név FolderBrowserDialog1
Mappa kijelölése és fájlok listázása egy mappában
Hozzon létre egy
Clickeseménykezelőt abrowseButton-hez az űrlapon lévő vezérlőelemre duplán kattintva. Megnyílik a Kódszerkesztő.Adja hozzá a következő kódot az
Clickeseménykezelőhöz.If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then ' List files in the folder. ListFiles(FolderBrowserDialog1.SelectedPath) End IfA
FolderBrowserDialog1.ShowDialoghívás megnyitja a Mappa tallózása párbeszédpanelt. Miután a felhasználó az OK gombra kattint, a rendszer argumentumként elküldi a SelectedPath tulajdonságot aListFilesmetódusnak, amelyet a következő lépésben ad hozzá.Adja hozzá a következő
ListFilesmetódust.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 SubEz a kód először törli a ListBoxot.
A GetFiles metódus ezután lekéri a sztringek gyűjteményét, egyet a könyvtárban lévő minden fájlhoz. A
GetFilesmetódus egy keresési minta argumentumot fogad el egy adott mintának megfelelő fájlok lekéréséhez. Ebben a példában csak a .txt kiterjesztésű fájlok lesznek visszaadva.A metódus által visszaadott sztringek
GetFilesezután bekerülnek a ListBoxba.Indítsa el az alkalmazást. Kattintson a Tallózás gombra. A Mappa tallózása párbeszédpanelen keresse meg a .txt fájlokat tartalmazó mappát, majd jelölje ki a mappát, és kattintson az OK gombra.
A
ListBoxkijelölt mappában található .txt fájlok listája.Állítsa le az alkalmazás futtatását.
Fájl attribútumainak és egy szövegfájl tartalmának lekérése
Hozzon létre egy
Clickeseménykezelőt aexamineButton-hez az űrlapon lévő vezérlőelemre duplán kattintva.Adja hozzá a következő kódot az
Clickeseménykezelőhöz.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)A kód ellenőrzi, hogy egy elem ki van-e jelölve a
ListBox. Ezután beolvasja a fájl elérési útjának bejegyzését aListBox. A FileExists metódus segítségével ellenőrizheti, hogy a fájl továbbra is létezik-e.A fájl elérési útja argumentumként lesz elküldve a
GetTextForOutputmetódusnak, amelyet a következő lépésben ad hozzá. Ez a metódus egy fájlinformációkat tartalmazó sztringet ad vissza. A fájladatok megjelennek a MessageBoxban.Adja hozzá a következő
GetTextForOutputmetódust.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 FunctionA kód a GetFileInfo metódussal szerzi meg a fájlparamétereket. A fájlparaméterek hozzá lesznek adva egy StringBuilder.
A OpenTextFileReader módszer beolvassa a fájl tartalmát egy StreamReader. A tartalom első sorát a
StreamReadergenerálja, és hozzáadódik aStringBuilder-hez.Indítsa el az alkalmazást. Kattintson a Tallózás gombra, és keresse meg a .txt fájlokat tartalmazó mappát. Kattintson az OK gombra.
Jelöljön ki egy fájlt a
ListBoxfelületen, majd kattintson a Vizsgálat gombra. Az AMessageBoxfájlinformációkat jeleníti meg.Állítsa le az alkalmazás futtatását.
Naplóbejegyzés hozzáadása
Adja hozzá az alábbi kódot az
examineButton_Clickeseménykezelő végéhez.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 IfA kód úgy állítja be a naplófájl elérési útját, hogy a naplófájl ugyanabba a könyvtárba kerüljön, mint a kijelölt fájl. A naplóbejegyzés szövege az aktuális dátumra és időpontra van állítva, amelyet a fájladatok követnek.
A WriteAllText metódust használják a naplóbejegyzés létrehozására, ahol a
appendargumentum értékeTrue.Indítsa el az alkalmazást. Tallózással válassza ki a szövegfájlt a
ListBox-ben, jelölje be az Eredmények mentése jelölőnégyzetet, majd kattintson a Vizsgálat gombra. Ellenőrizze, hogy a naplóbejegyzés a fájlba van-elog.txtírva.Állítsa le az alkalmazás futtatását.
Az aktuális könyvtár használatához
Hozzon létre egy eseménykezelőt
Form1_Loadaz űrlapra duplán kattintva.Adja hozzá a következő kódot az eseménykezelőhöz.
' Set the default directory of the folder browser to the current directory. FolderBrowserDialog1.SelectedPath = My.Computer.FileSystem.CurrentDirectoryEz a kód a mappaböngésző alapértelmezett könyvtárát az aktuális könyvtárra állítja.
Indítsa el az alkalmazást. Amikor először a Tallózás gombra kattint, a Mappa tallózása párbeszédpanel az Aktuális könyvtárra nyílik meg.
Állítsa le az alkalmazás futtatását.
Vezérlők szelektív engedélyezése
Adja hozzá a következő
SetEnabledmetódust.Private Sub SetEnabled() Dim anySelected As Boolean = (filesListBox.SelectedItem IsNot Nothing) examineButton.Enabled = anySelected saveCheckBox.Enabled = anySelected End SubA
SetEnabledmetódus engedélyezi vagy letiltja a vezérlőket attól függően, hogy egy elem van-e kijelölve aListBox.Hozzon létre egy
SelectedIndexChangedeseménykezelőtfilesListBoxaz űrlapon találhatóListBoxvezérlőelemre duplán kattintva.Adjunk hozzá egy hívást
SetEnabledaz újfilesListBox_SelectedIndexChangedeseménykezelőhöz.Adjon hozzá egy hívást a
SetEnabledeseménykezelő végénbrowseButton_Click.Adjon hozzá egy hívást a
SetEnabledeseménykezelő végénForm1_Load.Indítsa el az alkalmazást. Az Eredmények mentése jelölőnégyzet és a Vizsgálat gomb le van tiltva, ha egy elem nincs kijelölve a
ListBoxlistában.
Teljes példa a My.Computer.FileSystem használatával
A teljes példa az alábbi.
' 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
Teljes példa a System.IO használatával
Az alábbi egyenértékű példa a System.IO névtér osztályait használja a My.Computer.FileSystem objektumok helyett.
' 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