<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 輸入和輸出 > 原文: [https://zetcode.com/lang/visualbasic/io/](https://zetcode.com/lang/visualbasic/io/) 本章專門介紹 Visual Basic 中的輸入和輸出。 Visual Basic 中的輸入和輸出基于流。 流是與輸入和輸出一起使用的對象。 流是字節序列的抽象,例如文件,輸入/輸出設備,進程間通信管道或 TCP/IP 套接字。 在 Visual Basic 中,我們有一個`Stream`類,它是所有流的抽象類。 還有一些其他類可以從`Stream`類派生而來,從而使編程更加容易。 ## `MemoryStream` `MemoryStream`是用于處理計算機內存中數據的流。 ```vb Option Strict On Imports System.IO Module Example Sub Main() Dim ms As Stream = New MemoryStream(6) ms.WriteByte(9) ms.WriteByte(11) ms.WriteByte(6) ms.WriteByte(8) ms.WriteByte(3) ms.WriteByte(7) ms.Position = 0 Dim rs As Integer rs = ms.ReadByte() Do While rs <> -1 Console.WriteLine(rs) rs = ms.ReadByte() Loop ms.Close() End Sub End Module ``` 我們用`MemoryStream`將六個數字寫入存儲器。 然后,我們讀取這些數字并將其打印到控制臺。 ```vb Dim ms As Stream = New MemoryStream(6) ``` 該行創建并初始化一個容量為六個字節的`MemoryStream`對象。 ```vb ms.Position = 0 ``` 我們使用`Position`屬性將光標在流中的位置設置為開頭。 ```vb ms.WriteByte(9) ms.WriteByte(11) ms.WriteByte(6) ... ``` `WriteByte()`方法在當前位置的當前流中寫入一個字節。 ```vb Do While rs <> -1 Console.WriteLine(rs) rs = ms.ReadByte() Loop ``` 在這里,我們從流中讀取所有字節并將其打印到控制臺。 ```vb ms.Close() ``` 最后,我們關閉流。 ```vb $ ./memory.exe 9 11 6 8 3 7 ``` 示例的輸出。 ## `StreamReader` & `StreamWriter` `StreamReader`從字節流中讀取字符。 默認為 UTF-8 編碼。 `StreamWriter`以特定編碼將字符寫入流。 ```vb Option Strict On Imports System.IO Module Example Sub Main() Dim file As String file = "languages" Try Dim stream As StreamReader stream = New StreamReader(file) Console.WriteLine(stream.ReadToEnd()) Catch e As IOException Console.WriteLine("Cannot read file.") End Try End Sub End Module ``` 我們有一個名為`Languages`的文件。 我們從該文件中讀取字符并將其打印到控制臺。 ```vb Dim stream As StreamReader stream = New StreamReader(file) ``` `StreamReader`以文件名作為參數。 ```vb Console.WriteLine(stream.ReadToEnd()) ``` `ReadToEnd()`方法讀取所有字符到流的末尾。 ```vb $ cat languages Python Visual Basic PERL Java C C# $ ./readfile.exe Python Visual Basic PERL Java C C# ``` 當前目錄中有一個語言文件。 我們將文件的所有行打印到控制臺。 在下一個示例中,我們將對行進行計數。 ```vb Option Strict On Imports System.IO Module Example Sub Main() Dim file As String Dim count As Integer file = "languages" Try Dim stream As StreamReader stream = New StreamReader(file) While Not (stream.ReadLine() Is Nothing) count += 1 End While Catch e As IOException Console.WriteLine("Cannot read file.") End Try Console.WriteLine("There are {0} lines", count) End Sub End Module ``` 計算文件中的行數。 ```vb While Not (stream.ReadLine() Is Nothing) count += 1 End While ``` 在`While`循環中,我們使用`ReadLine()`方法從流中讀取一行。 它從流返回一行,如果到達輸入流的末尾,則返回`Nothing`。 以下是`StreamWriter`的示例。 ```vb Option Strict On Imports System.IO Module Example Sub Main() Dim mstream As New MemoryStream() Dim swriter As New StreamWriter(mstream) swriter.Write("ZetCode, tutorials for programmers.") swriter.Flush() Dim sreader As New StreamReader(mstream) Console.WriteLine(sreader.ReadToEnd()) sreader.Close() End Sub End Module ``` 在前面的示例中,我們將字符寫入內存。 ```vb Dim mstream As New MemoryStream() ``` 創建了`MemoryStream`。 ```vb Dim swriter As New StreamWriter(mstream) ``` `StreamWriter`類將內存流作為參數。 這樣,我們將要寫入內存流。 ```vb swriter.Write("ZetCode, tutorials for programmers.") swriter.Flush() ``` 我們寫一些文本和寫入器。 `Flush()`清除當前寫入器的所有緩沖區,并使所有緩沖的數據寫入基礎流。 ```vb Dim sreader As New StreamReader(mstream) Console.WriteLine(sreader.ReadToEnd()) ``` 現在,我們創建流讀取器的實例,并讀取回寫的所有內容。 ## `FileStream` `FileStream`類在文件系統上的文件上使用流。 此類可用于讀取文件,寫入文件,打開文件和關閉文件。 ```vb Option Strict On Imports System.IO Imports System.Text Module Example Sub Main() Dim fstream As New FileStream("author", FileMode.Append) Dim bytes As Byte() = New UTF8Encoding().GetBytes("Фёдор Михайлович Достоевский") fstream.Write(bytes, 0, bytes.Length) fstream.Close() End Sub End Module ``` 我們用俄語西里爾字母將一些文本寫入當前工作目錄中的文件。 ```vb Dim fstream As New FileStream("author", FileMode.Append) ``` 創建一個`FileStream`對象。 第二個參數是打開文件的模式。 附加模式將打開文件(如果存在)并查找到文件末尾,或創建一個新文件。 ```vb Dim bytes As Byte() = New UTF8Encoding().GetBytes("Фёдор Михайлович Достоевский") ``` 我們使用俄語西里爾字母中的文本創建字節數組。 ```vb fstream.Write(bytes, 0, bytes.Length) ``` 我們將字節寫入文件流。 ## `XmlTextReader` 我們可以使用流來讀取 XML 數據。 `XmlTextReader`是在 Visual Basic 中讀取 XML 文件的類。 該類是僅轉發和只讀的。 我們有以下 XML 測試文件。 ```vb <?xml version="1.0" encoding="utf-8" ?> <languages> <language>Python</language> <language>Ruby</language> <language>Javascript</language> <language>C#</language> </languages> ``` ```vb Option Strict On Imports System.IO Imports System.Xml Module Example Sub Main() Dim file As String file = "languages.xml" Try Dim xreader As New XmlTextReader(file) xreader.MoveToContent() Do While xreader.Read() Select Case xreader.NodeType Case XmlNodeType.Element Console.Write(xreader.Name & ": ") Case XmlNodeType.Text Console.WriteLine(xreader.Value) End Select Loop xreader.Close() Catch e As IOException Console.WriteLine("Cannot read file.") Catch e As XmlException Console.WriteLine("XML parse error") End Try End Sub End Module ``` 此 Visual Basic 程序從先前指定的 XML 文件中讀取數據并將其打印到終端。 ```vb Dim xreader As New XmlTextReader(file) ``` 創建一個`XmlTextReader`對象。 它以文件名作為參數。 ```vb xreader.MoveToContent() ``` `MoveToContent()`方法移至 XML 文件的實際內容。 ```vb Do While xreader.Read() ``` 該行從流中讀取下一個節點。 ```vb Case XmlNodeType.Element Console.Write(xreader.Name & ": ") Case XmlNodeType.Text Console.WriteLine(xreader.Value) ``` 在這里,我們打印元素名稱和元素文本。 ```vb Catch e As XmlException Console.WriteLine("XML parse error") ``` 我們檢查 XML 解析錯誤。 ```vb $ ./readxml.exe language: Python language: Ruby language: Javascript language: C# ``` 示例輸出。 ## 文件和目錄 .NET 框架提供了其他類,我們可以使用這些類來處理文件和目錄。 `File`類是更高級別的類,具有用于文件創建,刪除,復制,移動和打開的共享方法。 這些方法使工作更加輕松。 ```vb Option Strict On Imports System.IO Module Example Sub Main() Try Dim sw As StreamWriter sw = File.CreateText("cars") sw.WriteLine("Toyota") sw.WriteLine("Skoda") sw.WriteLine("BMW") sw.WriteLine("Volkswagen") sw.WriteLine("Volvo") sw.Close() Catch e As IOException Console.WriteLine("IO error") End Try End Sub End Module ``` 在示例中,我們創建了一個`cars`文件,并在其中寫入了一些汽車名稱。 ```vb sw = File.CreateText("cars") ``` `CreateText()`方法創建或打開一個文件,用于寫入 UTF-8 編碼的文本。 它返回一個`StreamWriter`對象。 ```vb sw.WriteLine("Toyota") sw.WriteLine("Skoda") ... ``` 我們向流寫入兩行。 ```vb Option Strict On Imports System.IO Module Example Sub Main() If File.Exists("cars") Console.WriteLine(File.GetCreationTime("cars")) Console.WriteLine(File.GetLastWriteTime("cars")) Console.WriteLine(File.GetLastAccessTime("cars")) End If File.Copy("cars", "newcars") End Sub End Module ``` 在第二個示例中,我們顯示了`File`類的其他五個共享方法。 ```vb If File.Exists("cars") ``` `Exists()`方法確定指定的文件是否存在。 ```vb Console.WriteLine(File.GetCreationTime("cars")) Console.WriteLine(File.GetLastWriteTime("cars")) Console.WriteLine(File.GetLastAccessTime("cars")) ``` 我們得到指定文件的創建時間,上次寫入時間和上次訪問時間。 ```vb File.Copy("cars", "newcars") ``` `Copy()`方法復制文件。 `My.Computer.FileSystem`是和對象,它提供用于處理驅動器,文件和目錄的屬性和方法。 ```vb Option Strict On Imports System.IO Module Example Sub Main() Try My.Computer.FileSystem.CreateDirectory("temp") My.Computer.FileSystem.CreateDirectory("newdir") My.Computer.FileSystem.MoveDirectory("temp", "temporary") Catch e As IOException Console.WriteLine("Cannot create directories") Console.WriteLine(e.Message) End Try End Sub End Module ``` 我們將使用上述對象中的兩種方法。 ```vb My.Computer.FileSystem.CreateDirectory("temp") ``` `CreateDirectory()`方法創建一個新目錄。 ```vb My.Computer.FileSystem.MoveDirectory("temp", "temporary") ``` `MoveDirectory()`方法為指定的目錄提供一個新名稱。 `DirectoryInfo`和`Directory`具有用于創建,移動和枚舉目錄和子目錄的方法。 ```vb Option Strict On Imports System.IO Module Example Dim subDir As IO.DirectoryInfo Dim dir As New IO.DirectoryInfo("../io") Dim fileName As String Dim files As String() = Directory.GetFiles("../io") Dim dirs As DirectoryInfo() = dir.GetDirectories() Sub Main() For Each subDir In dirs Console.WriteLine(subDir.Name) Next For Each fileName In files Console.WriteLine(fileName) Next End Sub End Module ``` 我們使用`DirectoryInfo`類遍歷特定目錄并打印其內容。 ```vb Dim dir As New IO.DirectoryInfo("../io") ``` 我們將顯示該目錄(`io`)的內容。 ```vb Dim files As String() = Directory.GetFiles("../io") ``` 我們使用共享的`GetFiles()`方法獲取`io`目錄的所有文件。 ```vb Dim dirs As DirectoryInfo() = dir.GetDirectories() ``` 我們得到所有目錄。 ```vb For Each subDir In dirs Console.WriteLine(subDir.Name) Next ``` 在這里,我們遍歷目錄并將其名稱打印到控制臺。 ```vb For Each fileName In files Console.WriteLine(fileName) Next ``` 在這里,我們遍歷文件數組并將其名稱打印到控制臺。 ```vb $ ./showcontents.exe newdir temp temporary ../io/append.exe ../io/append.vb ../io/append.vb~ ../io/author ../io/cars ... ``` 示例的輸出。 在本章中,我們介紹了 Visual Basic 中的輸入和輸出操作。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看