這個(gè)是你的問(wèn)題,不是vb.net速度慢。
為崇州等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及崇州網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站制作、做網(wǎng)站、崇州網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
你應(yīng)該這樣寫(xiě):
Dim file1 As FileStream = New FileStream("地址", FileMode.Open)
Dim myread As BinaryReader = New BinaryReader(file1)
Dim fn(file1.Length) As Byte
For i As Integer = 0 To file1.Length - 1
fn(i) = myread.ReadByte
Next
記得前面要 imports system.io
這個(gè)代碼把文件讀入一個(gè)fn的數(shù)組中,速度極快。
數(shù)據(jù)量不大的話,直接使用如下函數(shù)
byte[] bytes = File.ReadAllBytes("文件路徑"); // 讀二進(jìn)制數(shù)據(jù)
File.WriteAllBytes("文件路徑", bytes); // 寫(xiě)二進(jìn)制數(shù)據(jù)
本示例闡釋二進(jìn)制文件的基本輸入和輸出(使用 BinaryReader、BinaryWriter 和 FileStream 類。 在如何創(chuàng)建日志文件標(biāo)題下面有一個(gè)類似的主題。讀寫(xiě)二進(jìn)制信息使您可以創(chuàng)建和使用通過(guò)其他輸入和輸出方法無(wú)法訪問(wèn)的文件。本示例還展示寫(xiě)入非字符串?dāng)?shù)據(jù),并展示二進(jìn)制 I/O 的功能。
盡管計(jì)算機(jī)上的文件可以不同的類型和文件存儲(chǔ),但是,二進(jìn)制格式是文件的較常用格式之一。此處對(duì)創(chuàng)建二進(jìn)制文件的簡(jiǎn)短介紹使用基類 BinaryReader 和 BinaryWriter 從文件獲取信息,并將信息放入文件。這些類中的每個(gè)類均封裝一個(gè)信息流,因此,在進(jìn)一步操作之前,需要?jiǎng)?chuàng)建一個(gè)可用于來(lái)回寫(xiě)信息的流。因?yàn)橐獎(jiǎng)?chuàng)建文件,所以可使用 FileStream 來(lái)公開(kāi)特定文件,在此情況下,如果該文件已存在,則可以修改該文件,或者如果該文件尚不存在,則可以創(chuàng)建該文件。在有 FileStream 之后,可以使用它來(lái)構(gòu)造 BinaryReader 和 BinaryWriter
在讀入信息之后,可以對(duì)信息進(jìn)行所需的任何操作。但是,在某些時(shí)候,您可能想要將信息寫(xiě)回文件,因此需要 BinaryWriter。在本示例中,您將使用 Seek 方法將信息追加到文件結(jié)尾,因此,在開(kāi)始寫(xiě)入之前,請(qǐng)確保指向文件的指針位于文件結(jié)尾。在使用 BinaryWriter 寫(xiě)入信息時(shí)有多個(gè)選項(xiàng)。因?yàn)?Write 方法有足夠的重載用于您能夠?qū)懭氲乃行畔㈩愋?,所以,可以使?Write 方法向您的編寫(xiě)器封裝的流寫(xiě)入任何標(biāo)準(zhǔn)形式的信息。本情況下,還可以使用 WriteString 方法向流中寫(xiě)入長(zhǎng)度預(yù)先固定的字符串。
VB Source: VB\ReadWrite.aspx
%@ Import Namespace="System.Text" %
%@ Import Namespace="System.IO" %
script language="VB" runat=server
Class TestBinary
Public Shared Function ReadFile(selection As String) As String
Dim output As StringBuilder = New StringBuilder()
Dim fs As FileStream = New FileStream("data.bin", FileMode.OpenOrCreate)
Dim r As BinaryReader = New BinaryReader(fs)
Try
r.BaseStream.Seek(0,SeekOrigin.Begin) ' 將文件指針設(shè)置到文件開(kāi)始
' 因?yàn)椴煌瑪?shù)據(jù)類型之間的很多轉(zhuǎn)換結(jié)果都是不可解釋的,
' 所以當(dāng)在其他類型與二進(jìn)制數(shù)據(jù)之間進(jìn)行轉(zhuǎn)換時(shí),
' 必須捕捉可能引發(fā)的任何潛在的異常...
' 能夠正確讀取數(shù)據(jù)依賴于如何寫(xiě)入信息...
' 這與寫(xiě)日志文件時(shí)不同。
Do While r.BaseStream.Position r.BaseStream.Length ' 當(dāng)未到達(dá)文件結(jié)尾時(shí)
Select Case selection
Case "Boolean"
output.Append( r.ReadBoolean().ToString() )
Case "String"
output.Append( r.ReadString() )
Case "Integer"
output.Append( r.ReadInt32().ToString() )
End Select
Loop
Finally
fs.Close()
End Try
return output.ToString()
End Function
Public Shared Function WriteFile(output As Object, selection As String) As String
Dim fs As FileStream = New FileStream("data.bin", FileMode.Create)
Dim w As BinaryWriter = New BinaryWriter(fs)
Dim strOutput As String = ""
w.BaseStream.Seek(0, SeekOrigin.End) ' 將文件指針設(shè)置到文件結(jié)尾
' 因?yàn)檎趯?xiě)的信息可能不適合于所選擇用于寫(xiě)入的特定樣式
' (例如,單詞“Hello”作為整數(shù)?),所以我們必須捕捉寫(xiě)入
' 錯(cuò)誤,并通知用戶未能執(zhí)行該任務(wù)
Try
Select Case selection
Case "Boolean"
Dim b As Boolean = Convert.ToBoolean(output)
w.Write( b )
Case "String"
Dim s As String = Convert.ToString(output)
w.Write( s )
Case "Integer"
Dim i As Int32 = Convert.ToInt32(output)
w.Write(i)
End Select
Catch E As Exception
' 讓用戶知道未能寫(xiě)入該信息
strOutput = "寫(xiě)異常:" chr(13) _
"無(wú)法以所請(qǐng)求的格式寫(xiě)入要寫(xiě)入的信息。" _
chr(13) "請(qǐng)輸入嘗試寫(xiě)入的數(shù)據(jù)類型的有效值"
End Try
fs.Close()
return strOutput
End Function
End Class
Sub btnAction_Click(src As Object, E As EventArgs)
Dim s As String = ""
' 寫(xiě)出文件
s = TestBinary.WriteFile(txtInput.Text, lstDataIn.SelectedItem.Text)
If s = "" Then
Try
' 讀回信息,顯示信息...
txtOutput.Text = TestBinary.ReadFile(lstDataIn.SelectedItem.Text)
Catch Exc As Exception
' 讓用戶知道未能寫(xiě)入信息
s = "讀異常:" chr(13) _
"無(wú)法以所請(qǐng)求的格式讀取要寫(xiě)入的信息。" _
chr(13) "請(qǐng)輸入嘗試寫(xiě)入的數(shù)據(jù)類型的有效值"
End Try
Else
txtOutput.Text = s
End If
End Sub
/script
html
head
link rel="stylesheet" href="intro.css"
/head
body style="background-color:f6e4c6"
form method=post runat="server"
p
table
tr
tdb
下面的示例使用 BinaryWriter 對(duì)象創(chuàng)建一個(gè)二進(jìn)制文件,然后使用 BinaryReader 讀取該信息。/b可以選擇不同的對(duì)象來(lái)將所需的信息寫(xiě)入文件
此演示用于強(qiáng)調(diào)您需要知道如何讀取已寫(xiě)入的二進(jìn)制文件。一旦以某種格式寫(xiě)入數(shù)據(jù),就只能以該格式讀取該信息。但是,可以將多種不同的數(shù)據(jù)類型寫(xiě)入文件。在此演示中,輸入任意字符串并將它們作為字符串讀取,對(duì)于整型,僅輸入整型數(shù)值項(xiàng)(試試浮點(diǎn)數(shù)字,然后看看會(huì)發(fā)生什么...);對(duì)于布爾型項(xiàng),僅輸入詞“false”和“true”。
p
hr
/td
/tr
/table
asp:Table id="basetable" runat="server" border="0" cellspacing="0" cellpadding="5"
asp:tablerow
asp:tablecell verticalalign="top"
請(qǐng)選擇要保存到二進(jìn)制文件的數(shù)據(jù)類型...
/asp:tablecell
asp:tablecell verticalalign="top"
asp:listbox id="lstDataIn" runat="server"
asp:listitemBoolean/asp:listitem
asp:listitem selected="true"String/asp:listitem
asp:listitemInteger/asp:listitem
/asp:listbox
/asp:tablecell
asp:tablecell verticalalign="top"
asp:button id="btnAction" onclick="btnAction_Click" Text="寫(xiě)入/讀取文件" runat="server"/
/asp:tablecell
/asp:tablerow
open函數(shù)用來(lái)打開(kāi)一個(gè)文件,其調(diào)用的一般形式為:
文件指針名=fopen(文件名,使用文件方式);
其中,
“文件指針名”必須是被說(shuō)明為FILE
類型的指針變量;
“文件名”是被打開(kāi)文件的文件名;
“使用文件方式”是指文件的類型和操作要求。
“文件名”是字符串常量或字符串?dāng)?shù)組。
例如:
FILE
*fp;
fp=("file
a","r");
其意義是在當(dāng)前目錄下打開(kāi)文件file
a,只允許進(jìn)行“讀”操作,并使fp指向該文件。
又如:
FILE
*fphzk
fphzk=("c:\\hzk16","rb")
其意義是打開(kāi)C驅(qū)動(dòng)器磁盤(pán)的根目錄下的文件hzk16,這是一個(gè)二進(jìn)制文件,只允許按二進(jìn)制方式進(jìn)行讀操作。兩個(gè)反斜線“\\
”中的第一個(gè)表示轉(zhuǎn)義字符,第二個(gè)表示根目錄。
使用文件的方式共有12種,下面給出了它們的符號(hào)和意義。
文件使用方式
意義
“rt”
只讀打開(kāi)一個(gè)文本文件,只允許讀數(shù)據(jù)
“wt”
只寫(xiě)打開(kāi)或建立一個(gè)文本文件,只允許寫(xiě)數(shù)據(jù)
“at”
追加打開(kāi)一個(gè)文本文件,并在文件末尾寫(xiě)數(shù)據(jù)
“rb”
只讀打開(kāi)一個(gè)二進(jìn)制文件,只允許讀數(shù)據(jù)
“wb”
只寫(xiě)打開(kāi)或建立一個(gè)二進(jìn)制文件,只允許寫(xiě)數(shù)據(jù)
“ab”
追加打開(kāi)一個(gè)二進(jìn)制文件,并在文件末尾寫(xiě)數(shù)據(jù)
“rt+”
讀寫(xiě)打開(kāi)一個(gè)文本文件,允許讀和寫(xiě)
“wt+”
讀寫(xiě)打開(kāi)或建立一個(gè)文本文件,允許讀寫(xiě)
“at+”
讀寫(xiě)打開(kāi)一個(gè)文本文件,允許讀,或在文件末追加數(shù)據(jù)
“rb+”
讀寫(xiě)打開(kāi)一個(gè)二進(jìn)制文件,允許讀和寫(xiě)
“wb+”
讀寫(xiě)打開(kāi)或建立一個(gè)二進(jìn)制文件,允許讀和寫(xiě)
“ab+”
讀寫(xiě)打開(kāi)一個(gè)二進(jìn)制文件,允許讀,或在文件末追加數(shù)據(jù)
對(duì)于文件使用方式有以下幾點(diǎn)說(shuō)明:
1)
文件使用方式由r,w,a,t,b,+六個(gè)字符拼成,各字符的含義是:
r(read):
讀
w(write):
寫(xiě)
a(append):
追加
t(text):
文本文件,可省略不寫(xiě)
b(banary):
二進(jìn)制文件
+:
讀和寫(xiě)
2)
凡用“r”打開(kāi)一個(gè)文件時(shí),該文件必須已經(jīng)存在,且只能從該文件讀出。
3)
用“w”打開(kāi)的文件只能向該文件寫(xiě)入。若打開(kāi)的文件不存在,則以指定的文件名建立該文件,若打開(kāi)的文件已經(jīng)存在,則將該文件刪去,重建一個(gè)新文件。
4)
若要向一個(gè)已存在的文件追加新的信息,只能用“a”方式打開(kāi)文件。但此時(shí)該文件必須是存在的,否則將會(huì)出錯(cuò)。
5)
在打開(kāi)一個(gè)文件時(shí),如果出錯(cuò),fopen將返回一個(gè)空指針值NULL。在程序中可以用這一信息來(lái)判別是否完成打開(kāi)文件的工作,并作相應(yīng)的處理。因此常用以下程序段打開(kāi)文件:
6)
if((fp=fopen("c:\\hzk16","rb")==NULL)
{
printf("\nerror
on
open
c:\\hzk16
file
VB.NET打開(kāi)二進(jìn)制文件用fileopen完成,打開(kāi)二進(jìn)制文件的形式為:openmode.binary
讀取二進(jìn)制文件用的是fileget方法,寫(xiě)入二進(jìn)制文件用的是fileput方法。
應(yīng)用示例:將一批隨機(jī)數(shù)保存在一個(gè)dat文件中,然后再將其提取到文本框中。
二進(jìn)制文件的讀寫(xiě)一批隨機(jī)數(shù)的存取,程序?yàn)椋?/p>
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x, i, fn As Integer
Dim s As String = ""
fn = FreeFile()
FileOpen(fn, "d:\data.dat", OpenMode.Binary)
For i = 1 To 8
x = Int(Rnd() * 100)
s = s + Str(x)
FilePut(fn, x)
Next
FileClose(fn)
TextBox1.Text = s
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim x, fn As Integer
Dim s As String = ""
fn = FreeFile()
FileOpen(fn, "d:\data.dat", OpenMode.Binary)
Do While Not EOF(fn)
FileGet(fn, x)
s = s + Str(x) + " "
Loop
FileClose(fn)
TextBox1.Text = s
End Sub
文章名稱:vb.net讀寫(xiě)二進(jìn)制,c++二進(jìn)制讀寫(xiě)
本文地址:http://jinyejixie.com/article38/hopdsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、虛擬主機(jī)、網(wǎng)站改版、定制開(kāi)發(fā)、網(wǎng)站建設(shè)、小程序開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
網(wǎng)頁(yè)設(shè)計(jì)公司知識(shí)