打開文件用System.IO.FileStream
成都創(chuàng)新互聯(lián)公司是專業(yè)的碭山網(wǎng)站建設公司,碭山接單;提供成都網(wǎng)站制作、成都網(wǎng)站建設,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行碭山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
fs = New FileStream(path, FileMode.Open, FileAccess.ReadWrite)
用完記得用fs.Close關掉
Filter 屬性設置當前文件名篩選字符串,該字符串確定出現(xiàn)在對話框的“文件類型”框中的選項。
openFileDialog1.InitialDirectory = "c:\\" ;
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
openFileDialog1.FilterIndex = 1 ; // 獲取或設置文件對話框中當前選定篩選器的索引;
openFileDialog1.RestoreDirectory = true ;
對于每個篩選選項,篩選器字符串都包含篩選器說明,后接一垂直線條 (|) 和篩選器模式。不同篩選選項的字符串由垂直線條隔開。
本示例闡釋二進制文件的基本輸入和輸出(使用 BinaryReader、BinaryWriter 和 FileStream 類。 在如何創(chuàng)建日志文件標題下面有一個類似的主題。讀寫二進制信息使您可以創(chuàng)建和使用通過其他輸入和輸出方法無法訪問的文件。本示例還展示寫入非字符串數(shù)據(jù),并展示二進制 I/O 的功能。
盡管計算機上的文件可以不同的類型和文件存儲,但是,二進制格式是文件的較常用格式之一。此處對創(chuàng)建二進制文件的簡短介紹使用基類 BinaryReader 和 BinaryWriter 從文件獲取信息,并將信息放入文件。這些類中的每個類均封裝一個信息流,因此,在進一步操作之前,需要創(chuàng)建一個可用于來回寫信息的流。因為要創(chuàng)建文件,所以可使用 FileStream 來公開特定文件,在此情況下,如果該文件已存在,則可以修改該文件,或者如果該文件尚不存在,則可以創(chuàng)建該文件。在有 FileStream 之后,可以使用它來構造 BinaryReader 和 BinaryWriter
在讀入信息之后,可以對信息進行所需的任何操作。但是,在某些時候,您可能想要將信息寫回文件,因此需要 BinaryWriter。在本示例中,您將使用 Seek 方法將信息追加到文件結(jié)尾,因此,在開始寫入之前,請確保指向文件的指針位于文件結(jié)尾。在使用 BinaryWriter 寫入信息時有多個選項。因為 Write 方法有足夠的重載用于您能夠?qū)懭氲乃行畔㈩愋?,所以,可以使?Write 方法向您的編寫器封裝的流寫入任何標準形式的信息。本情況下,還可以使用 WriteString 方法向流中寫入長度預先固定的字符串。
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ù)據(jù)類型之間的很多轉(zhuǎn)換結(jié)果都是不可解釋的,
' 所以當在其他類型與二進制數(shù)據(jù)之間進行轉(zhuǎn)換時,
' 必須捕捉可能引發(fā)的任何潛在的異常...
' 能夠正確讀取數(shù)據(jù)依賴于如何寫入信息...
' 這與寫日志文件時不同。
Do While r.BaseStream.Position r.BaseStream.Length ' 當未到達文件結(jié)尾時
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) ' 將文件指針設置到文件結(jié)尾
' 因為正在寫的信息可能不適合于所選擇用于寫入的特定樣式
' (例如,單詞“Hello”作為整數(shù)?),所以我們必須捕捉寫入
' 錯誤,并通知用戶未能執(zhí)行該任務
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
' 讓用戶知道未能寫入該信息
strOutput = "寫異常:" chr(13) _
"無法以所請求的格式寫入要寫入的信息。" _
chr(13) "請輸入嘗試寫入的數(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 = ""
' 寫出文件
s = TestBinary.WriteFile(txtInput.Text, lstDataIn.SelectedItem.Text)
If s = "" Then
Try
' 讀回信息,顯示信息...
txtOutput.Text = TestBinary.ReadFile(lstDataIn.SelectedItem.Text)
Catch Exc As Exception
' 讓用戶知道未能寫入信息
s = "讀異常:" chr(13) _
"無法以所請求的格式讀取要寫入的信息。" _
chr(13) "請輸入嘗試寫入的數(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 對象創(chuàng)建一個二進制文件,然后使用 BinaryReader 讀取該信息。/b可以選擇不同的對象來將所需的信息寫入文件
此演示用于強調(diào)您需要知道如何讀取已寫入的二進制文件。一旦以某種格式寫入數(shù)據(jù),就只能以該格式讀取該信息。但是,可以將多種不同的數(shù)據(jù)類型寫入文件。在此演示中,輸入任意字符串并將它們作為字符串讀取,對于整型,僅輸入整型數(shù)值項(試試浮點數(shù)字,然后看看會發(fā)生什么...);對于布爾型項,僅輸入詞“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"
請選擇要保存到二進制文件的數(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="寫入/讀取文件" runat="server"/
/asp:tablecell
/asp:tablerow
在工具欄,拖一個OpenFileDialog放在窗體上。
在工具欄拖一個button按鈕放在窗體上。
雙擊按鈕,創(chuàng)建按鈕的_click過程。
在click過程中
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
OpenFileDialog1.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim 打開的文件名 As String = OpenFileDialog1.FileName
MsgBox(打開的文件名)
End If
End Sub
open(/dev/ietctl, O_RDWR)
這是文件I/O的常用函數(shù),open函數(shù),open函數(shù)用來打開一個設備,他返回的是一個整型變量,如果這個值等于-1,說明打開文件出現(xiàn)錯誤,如果為大于0的值,那么這個值代表的就是文件描述符。
一般的寫法是:
if((fd=open("/dev/ttys0",O_RDWR | O_NOCTTY | O_NDELAY)0)
{perror("open");}
這個是常用的一種用法fd是設備描述符,linux在操作硬件設備時,屏蔽了硬件的基本細節(jié),只把硬件當做文件來進行操作,而所有的操作都是以open函數(shù)來開始,它用來獲取fd,然后后期的其他操作全部控制fd來完成對硬件設備的實際操作。你要打開的/dev/ttyS0,代表的是串口1,也就是常說的com1,后面跟的是一些控制字。intopen(constchar*pathname,intoflag,?/*,mode_tmode * / )這個就是open函數(shù)的公式。
控制字可以有多種:
O_RDONLY 只讀打開。
O_WRONLY 只寫打開。
O_RDWR 讀、寫打開。
O_APPEND 每次寫時都加到文件的尾端。
O_CREAT 若此文件不存在則創(chuàng)建它。使用此選擇項時,需同時說明第三個參數(shù)mode,用其說明該新文件的存取許可權位。
O_EXCL 如果同時指定了O_CREAT,而文件已經(jīng)存在,則出錯。這可測試一個文件是否存在,如果不存在則創(chuàng)建此文件成為一個原子操作。
O_TRUNC 如果此文件存在,而且為只讀或只寫成功打開,則將其長度截短為0。
O_NOCTTY 如果p a t h n a m e指的是終端設備,則不將此設備分配作為此進程的控制終端。
O_NONBLOCK 如果p a t h n a m e指的是一個F I F O、一個塊特殊文件或一個字符特殊文件,則此選擇項為此文件的本次打開操作和后續(xù)的I / O操作設置非阻塞方式。
O_SYNC 使每次w r i t e都等到物理I / O操作完成。
這些控制字都是通過“或”符號分開(|)
額,怎么說呢,我舉個例子吧,你自己做做
先畫一個TextBox,設置成多行顯示,邊緣盡量靠近窗體邊緣(要容得下多排文本就行),也可以設置ScrollBar屬性(值為Vertical)來添加滾動條,還要一個Button按鈕控件
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Text As String = "", Line As String = "" '聲明一個名為Text的String類型變量用于儲存TextBox.Text的值, 'Line變量用于儲存被打開文件中的每一行文本 OpenFileDialog1.Filter = "Text File (*.txt)|*txt" '設置打開的文件類型為 .txt OpenFileDialog1.ShowDialog() '顯示打開對話框 If OpenFileDialog1.FileName "" Then '如果文件路徑不為空則執(zhí)行Then后面的語句 Try '使用Try...Catch語句捕獲和處理執(zhí)行代碼過程中的錯誤 FileOpen(1, OpenFileDialog1.FileName, OpenMode.Input) '打開文件 Do Until EOF(1) '使用Do Until語句和EOF函數(shù)來確定是否讀到了文件內(nèi)容的最后,如果讀到最后則跳出循環(huán) Line = LineInput(1) '使用LineInput函數(shù)為Line變量賦值 Text = Text Line vbCrLf '將Line變量的值持續(xù)賦給Text變量,并且每賦一次值就換行 Loop '繼續(xù)循環(huán),知道文件內(nèi)容被讀取完最后一行才跳出循環(huán) TextBox1.Text = Text '將Txet的值賦給TextBox1.Text,使文件內(nèi)容顯示在文本框中 Catch ex As Exception MsgBox(ex.Message) '如果操作文件出現(xiàn)錯誤則彈出錯誤信息 Finally FileClose() '文件操作結(jié)束后關閉文件 End Try End If End Sub
/p