六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

把握VB.NET中的流(Stream) (3) Montaque(翻譯)

[摘要]把握VB.NET中的流(Stream) (三)文件操作具體實例在這一部分,你將找到更多常用的文件操作的代碼實例。最常用、最基本的操作就是把text寫入文件和讀回來,F在的應用程序通常不用二進制文件作...
把握VB.NET中的流(Stream) (三)

文件操作具體實例

在這一部分,你將找到更多常用的文件操作的代碼實例。最常用、最基本的操作就是把text寫入文件和讀回來,F在的應用程序通常不用二進制文件作存儲簡單的變量,而用它來存儲對象,對象集合以及其他機器代碼。下面,將看到具體操作的例子。

讀寫文本文件

為了把text保存到文件,創建一個基于FileStream的StreamReader對象,然后調用Write方法把需要保存的text寫入文件。下面的代碼用SaveFileDialog提示用戶指定一個文件,用于保存TextBox1的內容。

 SaveFileDialog1.Filter = _

"Text Files *.txt All Files *.*"

 SaveFileDialog1.FilterIndex = 0

 If SaveFileDialog1.ShowDialog = DialogResult.OK Then

 Dim FS As FileStream = SaveFileDialog1.OpenFile

 Dim SW As New StreamWriter(FS)

 SW.Write(TextBox1.Text)

 SW.Close()

 FS.Close()

 End If

同樣采用類似的語句,我們讀取一個文本文件,并把內容顯示在TextBox控件中。StreamReader的ReadToEnd方法返回文件的全部內容。

 OpenFileDialog1.Filter = _

"Text Files *.txt All Files *.*"

 OpenFileDialog1.FilterIndex = 0

 If OpenFileDialog1.ShowDialog = DialogResult.OK Then

 Dim FS As FileStream

 FS = OpenFileDialog1.OpenFile

 Dim SR As New StreamReader(FS)

 TextBox1.Text = SR.ReadToEnd

 SR.Close()

 FS.Close()

 End If

各種對象的存儲

采用BinaryFormatte以二進制的形式,或者用SoapFormatter類以XML格式都可以序列化一個具體的對象。只要把所有BinaryFormatter的引用改為SoapFormatter,無需改變任何代碼,就可以以XML格式序列化對象。

首先創建一個BinaryFormatter實例:

 Dim BinFormatter As New Binary.BinaryFormatter()

然后創建一個用于存儲序列化對象的FileStream對象:

 Dim FS As New System.IO.FileStream("c:\test.txt", IO.FileMode.Create)

接著調用BinFormatter的Serialize方法序列化任何可以序列化的framework對象:

 R = New Rectangle(rnd.Next(0, 100),rnd.Next(0, 300), _

 rnd.Next(10, 40),rnd.Next(1, 9))

 BinFormatter.Serialize(FS, R)

加一個Serializable屬性使得自定義的對象可以序列化

<Serializable()> Public Structure Person

 Dim Name As String

 Dim Age As Integer

 Dim Income As Decimal

 End Structure

下面代碼創建一個Person對象實例,然后調用BinFormatter的Serialize方法序列化自定義對象:

 P = New Person()

 P.Name = "Joe Doe"

 P.Age = 35

 P.Income = 28500

 BinFormatter.Serialize(FS, P)

你也可以在同一個Stream中接著序列化其他對象,然后以同樣的順序讀回。例如,在序列化Person對象之后接著序列化一個Rectangle對象:

 BinFormatter.Serialize(FS, New Rectangle(0, 0, 100, 200))

 創建一個BinaryFormatter對象,調用其Deserialize方法,然后把返回的值轉化為正確的類型,就是整個反序列化過程。然后接著發序列化Stream的其他對象。

假定已經序列化了Person和Rectangle兩個對象,以同樣的順序,我們反序列化就可以得到原來的對象:

 Dim P As New Person()

 P = BinFormatter.Serialize(FS, Person)

 Dim R As New Rectangle

 R = BinFormatter.Serialize(FS, Rectangle)

Persisting Collections

集合的存儲

大多數程序處理對象集合而不是單個的對象。對于集合數據,首先創建一個數組(或者是其他類型的集合,比如ArrayList或HashTable),用對象填充,然后一個Serialize方法就可以序列化真個集合,是不是很簡單?下面的例子,首先創建一個有兩個Person對象的ArrayList,然后序列化本身:

 Dim FS As New System.IO.FileStream _

("c:\test.txt", IO.FileMode.Create)

 Dim BinFormatter As New Binary.BinaryFormatter()

 Dim P As New Person()

 Dim Persons As New ArrayList

 P = New Person()

 P.Name = "Person 1"

 P.Age = 35

 P.Income = 32000

 Persons.Add(P)

 P = New Person()

 P.Name = "Person 2"

 P.Age = 50

 P.Income = 72000

 Persons.Add(P)

 BinFormatter.Serialize(FS, Persons)

以存儲序列化數據的文件為參數,調用一個BinaryFormatter實例的Deserialize方法,就會返回一個對象,然后把它轉化為合適的類型。下面的代碼反序列化文件中的所有對象,然后處理所有的Person對象:

 FS = New System.IO.FileStream _

("c:\test.txt", IO.FileMode.OpenOrCreate)

 Dim obj As Object

 Dim P As Person(), R As Rectangle()

 Do

 obj = BinFormatter.Deserialize(FS)

 If obj.GetType Is GetType(Person) Then

 P = CType(obj, Person)

 ' Process the P objext

 End If

 Loop While FS.Position < FS.Length - 1

 FS.Close()

下面的例子調用Deserialize方法反序列化真個集合,然后把返回值轉換為合適的類型(Person):

 FS = New System.IO.FileStream("c:\test.txt", IO.FileMode.OpenOrCreate)

 Dim obj As Object

 Dim Persons As New ArrayList

 obj = CType(BinFormatter.Deserialize(FS), ArrayList)

 FS.Close()




主站蜘蛛池模板: 天堂综合 | 日韩不卡免费视频 | 亚洲高清一区二区三区四区 | 一二三四高清在线手机视频 | 天天操天天曰 | 天天拍夜夜添久久精品免费 | 色噜噜狠狠狠狠色综合久不 | 亚洲欧美日韩精品一区 | 青草视频入口 在线观看 | 人成精品 | 婷婷综合七月激情啪啪 | 日本视频中文字幕一区二区 | 视频一区二区三区蜜桃麻豆 | 午夜精品久久久久久久99热下载 | 五月天婷婷在线观看视频 | 天天天夜夜夜夜夜 | 视频一区视频二区在线观看 | 青青国产线免观看手机版精品 | 四虎在线永久免费视频网站 | 天天操天天插天天射 | 香蕉视频导航 | 在线综合亚洲欧美网站天堂 | 青青草原视频在线 | 夜色爽爽| 天美蜜桃精东乌鸦果冻麻豆 | 欧洲乱码专区一区二区三区四区 | 亚欧乱色一区二区三区 | 亚洲人成网站在线观看播放 | 亚洲成人日韩 | 伊人久久大香现线蕉 | 日本免费网 | 影音先锋男人资源站 | 青草国产在线观看 | 中文字幕欧美日韩久久 | 欧美影院一区二区三区 | 中文字幕色 | 一二三四影视在线看片 | 天天操天天摸天天曰天天干天天弄天天干 | 亚洲欧美日韩在线不卡 | 日日淫 | 四虎影院在线免费观看视频 |