您好,在Visual Basic.NET中,是沒(méi)有像這樣的文件I/O操作的,一般都是通過(guò)System.IO.StreamReader和System.IO.StreamWriter類(lèi),System.IO.BinaryReader和System.IO.BinaryWriter類(lèi)來(lái)讀寫(xiě)文件以及利用My.Computer.FileSystem類(lèi)讀寫(xiě)文件,利用System.IO.Filestream類(lèi)來(lái)創(chuàng)建文件,通過(guò)引用Microsoft Scripting Runtime來(lái)執(zhí)行文件(夾)和驅(qū)動(dòng)器的特殊操作,常用的是System.IO.StreamReader和System.IO.StreamWriter類(lèi)。
創(chuàng)新互聯(lián)是一家從事企業(yè)網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、行業(yè)門(mén)戶網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)制作的專(zhuān)業(yè)的建站公司,擁有經(jīng)驗(yàn)豐富的網(wǎng)站建設(shè)工程師和網(wǎng)頁(yè)設(shè)計(jì)人員,具備各種規(guī)模與類(lèi)型網(wǎng)站建設(shè)的實(shí)力,在網(wǎng)站建設(shè)領(lǐng)域樹(shù)立了自己獨(dú)特的設(shè)計(jì)風(fēng)格。自公司成立以來(lái)曾獨(dú)立設(shè)計(jì)制作的站點(diǎn)數(shù)千家。
例如說(shuō)要讀取一個(gè)文件,我們可以利用System.IO.StreamReader類(lèi)編寫(xiě)一個(gè)方法(也就是函數(shù)),但是首先要在當(dāng)前類(lèi)的開(kāi)頭添加一個(gè)引用,引用名稱(chēng):System.IO,添加引用的代碼如下
Imports System.IO
添加引用之后,就在當(dāng)前類(lèi)的內(nèi)部創(chuàng)建方法:
Private Function ReadFile(ByVal FileURL As String) As String
Dim sr As StreamReader = New StreamReader(FileURL)
ReadFile = sr.ReadToEnd()
sr.Close()
sr = Nothing
End Function
示例說(shuō)明:
該方法是一個(gè)返回String(字符串)數(shù)據(jù)的函數(shù),F(xiàn)ileURL作為參數(shù)是用來(lái)存放需要訪問(wèn)的文件的URL,當(dāng)然,要獲取一個(gè)文件的URL,就是利用這一句代碼實(shí)現(xiàn)的:
Dim sr As StreamReader = New StreamReader(FileURL)
當(dāng)獲取了URL之后,就要對(duì)文件進(jìn)行讀取操作了,然后將讀取的結(jié)果返回給方法:
ReadFile = sr.ReadToEnd()
讀取文件完畢之后,要對(duì)文件執(zhí)行關(guān)閉操作:
sr.Close()
當(dāng)然別忘了清理資源:
sr = Nothing
StreamReader類(lèi)可以從流或文件中讀取字符,在創(chuàng)建StreamREader類(lèi)的對(duì)象時(shí),可以指定一個(gè)流對(duì)象,也可以指定一個(gè)文件URL,創(chuàng)建對(duì)象后就可以調(diào)用他的方法,從流中讀取數(shù)據(jù),其常用方法如下:
Peek:返回下一個(gè)可用字符,但不使用它。
Read:讀取輸入流中下一個(gè)字符或一組字符并移動(dòng)流或文件指針。
ReadBlock:從當(dāng)前流中讀取最大數(shù)量字符并從index開(kāi)始將數(shù)據(jù)寫(xiě)入buffer。
ReadLine:從當(dāng)前流中讀取一行字符并將字符作為String返回。
REadToEnd:從流的當(dāng)前位置到末尾讀取流。
Close:關(guān)閉打開(kāi)的對(duì)象,釋放資源。
注:流,一種新的數(shù)據(jù)格式,這種格式可通過(guò)System.IO命名空間下的類(lèi)訪問(wèn)。流用Stream類(lèi)表示,所有的流都是從這個(gè)類(lèi)中繼承的。流向用戶提供了一個(gè)一般的數(shù)據(jù)視圖,隱藏了操作系統(tǒng)和底層設(shè)備的實(shí)現(xiàn)細(xì)節(jié),所有的流都支持讀寫(xiě)操作。在打開(kāi)文件時(shí)將返回對(duì)應(yīng)的流對(duì)象,用戶可以對(duì)流對(duì)象進(jìn)行讀寫(xiě)操作。
如果要對(duì)文件執(zhí)行按行讀取操作,這時(shí)就會(huì)用到枚舉,這時(shí)候,代碼就要更改一下了:
Private Function ReadFile(ByVal FileURL As String) As String
Dim sr As StreamReader = New StreamReader(FileURL)
For Each fLine As String In sr.ReadToEnd()
Line = sr.ReadLine()
ReadFile = ReadFile fLine
Next sr.ReadLine
sr.Close()
End Function
示例說(shuō)明:
For Each…Next:派生于For…Next循環(huán),用于枚舉一系列對(duì)象中的成員,而這些對(duì)象組成集合,如果集合中至少存在一個(gè)元素,程序就會(huì)靜茹For Each塊執(zhí)行。其格式如下:
For Each 元素 [As 數(shù)據(jù)類(lèi)型] In 元素集合
[循環(huán)體]
[Exit For]
[循環(huán)體]
Next [元素]
比如:
Dim CountNumber As ULong = 0
Dim FolderName() As String = New String() {" "}
For Each strFolder As String In My.Computer.FileSystem.GetDirectories("C:\")
CountNumber = CountNumber + 1
ReDim Preserve FolderName(1 To CountNumber)
FolderName = strFolder
Next strFolder
注:My.Computer.FileSystem.GetDirectories:主要用來(lái)枚舉指定目錄的子文件夾。
Preserve:主要用來(lái)避免重定義數(shù)組而不損失數(shù)組元素的原有數(shù)據(jù)。
另外,利用My.Computer.FileSystem也可以實(shí)現(xiàn)文件的讀取,其代碼如下:
Dim fpReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt")
示例說(shuō)明:
定義一個(gè)字符串變量利用My.Computer.FileSystem.ReadAllText來(lái)實(shí)現(xiàn)對(duì)“C:\test.txt”的讀取。
如果是已經(jīng)編碼的文本,則可以使用My.Computer.FileSystem對(duì)象中的ReadAllText方法并提供路徑和文件編碼類(lèi)型,將文本寫(xiě)入字符串變量中,例如:
Dim fpReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt", _
System.Text.Encoding.UTF32)
當(dāng)然,System.Text.Encoding的成員不止一個(gè),它還有如下成員:
System.Text.Encoding.UTF8
System.Text.Encoding.UTF16
System.Text.Encoding.ASCII
System.Text.Encoding.Unicode
這些是常見(jiàn)的成員,也是主要的成員。
另外,利用My.Computer.Filesystem類(lèi)無(wú)法實(shí)現(xiàn)文件的行操作,還有,如果您的計(jì)算機(jī)未安裝完整的Microsoft.NET Framework Runtime,則無(wú)法實(shí)現(xiàn)這種操作!
寫(xiě)入文件的操作同樣簡(jiǎn)單,Visual Basic.NET 允許用戶使用StreamWriter來(lái)對(duì)文件寫(xiě)入內(nèi)容,下面就讓我們來(lái)創(chuàng)建一個(gè)子例程,來(lái)實(shí)現(xiàn)文件的寫(xiě)入:
Private Sub WriterFile(ByVal FileURL As String, ByVal FileCon As String)
Dim sr As StreamWriter = New StreamWriter(FileURL)
sr.Write(FileCon)
sr.Close()
sr = Nothing
End Sub
示例說(shuō)明:
sr.Write(FileCon):將FileCon寫(xiě)入文件FileURL之中。
另外,StreamWriter常用方法如下:
WriteLine:向流中寫(xiě)入一行,后面跟結(jié)束符。
Write:寫(xiě)入流,向流對(duì)象中寫(xiě)入字符并移動(dòng)流或文件指針。
Close:關(guān)閉打開(kāi)的對(duì)象,釋放資源。
附:Visual Basic 6.0文件操作解說(shuō):
打開(kāi): Open 文件名 For Input | Output | Append As [#]文件號(hào)
Input打開(kāi)讀入,文件不存在報(bào)錯(cuò)。Output打開(kāi)覆蓋寫(xiě)入,文件不存在則創(chuàng)建。Append打 開(kāi)追加寫(xiě)入,文件不存在則創(chuàng)建。
讀: Line Input #文件號(hào), 字符串變量
讀一行數(shù)據(jù)存入字符串變量,數(shù)據(jù)包括空格、Tab、等,不包括回車(chē)符和換行符,所以要顯示文件的換行效果,要手動(dòng)添加回車(chē)符和換行符(vbCrLf)
Input #文件號(hào), 變量1[, | ;] [變量2]...
這種方式可以存入多個(gè)變量,而且變量類(lèi)型不限于字符串型。
寫(xiě): Print #文件號(hào), 參數(shù)1[, | ;] [參數(shù)2]...
將各參數(shù)逐個(gè)寫(xiě)入文件。參數(shù)間用逗號(hào)隔開(kāi)時(shí),文件中相應(yīng)插入多個(gè)空格;用分號(hào)隔開(kāi)時(shí),插入一個(gè)空格??梢杂肧pc(n)、Tab(n)等進(jìn)行排版。
Write #文件號(hào), 參數(shù)1[, | ;] [參數(shù)2]...
這種寫(xiě)入方式將自動(dòng)添加界定符,對(duì)不同參數(shù)的類(lèi)型加以界定。
Visual Basic 6.0文件操作函數(shù):
Seek: Seek(文件號(hào))
返回文件正在訪問(wèn)的位置,返回值為長(zhǎng)整型。對(duì)順序文件和二進(jìn)制文件,返回值以字節(jié)為單位;對(duì)隨機(jī)訪問(wèn)文件,返回值以記錄號(hào)為單位。
Seek: Seek [#]文件號(hào),位置
定位文件到指定位置。位置單位同上所述。
Input: Input (字節(jié)數(shù),[#]文件號(hào))
從文件的訪問(wèn)當(dāng)前位置讀入指定字節(jié)數(shù)的數(shù)據(jù)。僅適用于順序文件和二進(jìn)制文件。
EOF: EOF(文件號(hào))
判斷文件的訪問(wèn)位置是否在文件尾,如果是,返回True,否則,返回False。
LOF: LOF(文件號(hào))
返回文件長(zhǎng)度,單位為字節(jié)。
FileLen: FileLen (文件名)
返回文件名對(duì)應(yīng)文件的長(zhǎng)度,單位是字節(jié)。該函數(shù)取磁盤(pán)文件標(biāo)識(shí)中的長(zhǎng)度,即文件打開(kāi)前的長(zhǎng)度,可以取未打開(kāi)的文件長(zhǎng)度。
GetAttr: GetAttr (Pathname)
返回指定文件或文件夾的屬性。
FileAttr: FileAttr (文件號(hào))
返回文件號(hào)對(duì)應(yīng)文件的打開(kāi)方式。
GetDateTime: GetDateTime (Pathname)
返回文件被創(chuàng)建或修改的最后日期和時(shí)間。
Free: FreeFile[(0|1)]
返回未被占用的文件號(hào),F(xiàn)ree或Free(0)返回1~255之間未占用的文件號(hào),F(xiàn)ree(1)返回256~511之間未占用的文件。
Dir: Dir (Pathname [,Attributes])
測(cè)試指定路徑是否有某文件,Attributes附加文件屬性條件,取值vbNormal、vbReadOnly、vbHidden、vbSystem、vbVolume、vbDirectory。
Kill: Kill (文件名)
刪除指定文件,文件名可包含路徑。
FileCopy: FileCopy 源文件,目標(biāo)文件
拷貝文件。
Name: Name 舊文件名 As 新文件名
文件重命名。前后路徑不一致時(shí),操作為移動(dòng)文件并重命名。
MkDir: MkDir path
新建文件夾。
RmDir: Rmdir path
刪除文件夾。
ChDrive: ChDrive Drive
改變當(dāng)前驅(qū)動(dòng)器 ChDrive "D"
CurDir: CurDir [(driver)]
返回當(dāng)前工作路徑,指定driver則返回目標(biāo)驅(qū)動(dòng)器的當(dāng)前工作路徑。
舉例:
'新建文件,并寫(xiě)入數(shù)據(jù),關(guān)閉
Open "a.txt" For Output As #1
Print #1, "ABCDEFG"; vbCrLf; "HIJK"
Close #1
'打開(kāi)文件,并全部寫(xiě)入新文件,關(guān)閉
Open "a.txt" For Input As #2
Open "b.txt" For Output As #3
Dim str As String
While (Not EOF(2))
Line Input #2, str
Print #3, str
Wend
Close
注:關(guān)于Visual Basic 6.0的文件操作資料來(lái)自于
如果您覺(jué)得我的回答幫助了您解決難題,別忘了采納哦,如果我的回答未能解決您的問(wèn)題,您可以在互聯(lián)網(wǎng)上尋找更多的解決方案!
無(wú)法直接獲取,但可以采用變通的方法,思路:
把word轉(zhuǎn)換成二進(jìn)制流前先用變量把拓展名和后綴獲取到(例如 var filename = “xxxx.doc”)
定義一個(gè)int變量記錄二進(jìn)制流(word)的長(zhǎng)度。并將該變量轉(zhuǎn)成4字節(jié)的btye[]數(shù)組
將第一步中獲取到的文件名字符串轉(zhuǎn)成byte[]數(shù)組。
將字節(jié)按照: word文件byte[]+文件名byte[]+word文件長(zhǎng)度byte[](第二步)按照順序拼接成一個(gè)byte[]數(shù)組
還原:
1.首先讀取總byte[]的后4個(gè)字節(jié),以確定文件二進(jìn)制流的有效長(zhǎng)度(假設(shè)為L(zhǎng)).
2.將索引0至L 之間的字節(jié)數(shù)組按常規(guī)方式恢復(fù)成流.
3.將索引L至N-4之間的字節(jié)數(shù)組還原成字符串,即可獲得原文件名.
然后,愛(ài)咋咋地~~~~
工作需要 我需要使用對(duì)文本文件進(jìn)行讀寫(xiě)操作 編程需要完成如下工作
把程序執(zhí)行錯(cuò)誤追加到錯(cuò)誤日志中
使巧巧讀書(shū)網(wǎng)的編輯能夠讀取錯(cuò)誤日志
記得以前使用vb 的時(shí)候 對(duì)文本文件的操作挺麻煩的 特別是在寫(xiě)文件的時(shí)候 需要區(qū)分什么順序文件 隨機(jī)文件 很教材都專(zhuān)門(mén)針對(duì)文本文件的讀寫(xiě)開(kāi)辟了一個(gè)章節(jié)來(lái)講解 夠麻煩的了 現(xiàn)在使用 net讀寫(xiě)文本文件 因?yàn)闀r(shí)間倉(cāng)促 沒(méi)來(lái)得及細(xì)看MSDN 同時(shí)受到 的思路影響 把問(wèn)題復(fù)雜化了 在追加記錄到文本文件尾部的時(shí)候就寫(xiě)不下去了 后來(lái)仔細(xì)看了一下MSDN中例子 問(wèn)題終于得到了解決
好了下面進(jìn)入正題 分別把中對(duì)文本文件進(jìn)行讀和寫(xiě)的通用操作做個(gè)示例 免得后來(lái)新手多走彎路
我們這里是對(duì)文件流進(jìn)行操作 所以模塊前面要加上
Imports System IO
寫(xiě)操作
使用System IO的StreamWriter 下面是代碼
Dim strFilePath As String = SaveFileDialog FileName
Dim sw As StreamWriter = New StreamWriter(strFilePath True) true是指以追加的方式打開(kāi)指定文件
For i = To j
temp = i ToString
sw WriteLine(temp)
sw Flush()
Next
sw Close()
sw = Nothing
首先要說(shuō)明的是構(gòu)造函數(shù)new
Public Sub New(path append Encoding)
path 要打開(kāi)文件的完整路徑 如果文件不存在則自動(dòng)建立一個(gè)新的文件
append 缺省值為false 指示是否以追加方式打開(kāi)指定文件 false——如果存在path指定的文件 則覆蓋原文件 否則建立一個(gè)新文件 true——如果存在path指定的文件 則打開(kāi)該文件 以追加數(shù)據(jù)的方式在文尾寫(xiě)數(shù)據(jù) 否則建立一個(gè)新文件
Encoding 缺省值為System Text Encoding Default 即使用系統(tǒng)缺省的編碼 指示以什么樣的編碼寫(xiě)文件
WriterLine(str) 在文本中添加一個(gè)新行 同時(shí)在行尾加上回車(chē)換行符
讀操作
Dim line As String
Dim sr As StreamReader = New StreamReader(strPath System Text Encoding Default)
Do While sr Peek()
line = sr ReadLine()
Loop
sr Close()
sr = Nothing
構(gòu)造函數(shù)new
Public Sub New(Path Encoding)
path 要打開(kāi)文件的完整路徑 如果文件拋出一個(gè)錯(cuò)誤
Encoding 缺省值為System Text Encoding Default 即使用系統(tǒng)缺省的編碼 指示以什么樣的編碼讀文件
lishixinzhi/Article/program/net/201311/11973
1、實(shí)現(xiàn)上傳按鈕方法代碼。
2、判斷圖片對(duì)象是否為空代碼。
3、取得數(shù)據(jù)庫(kù)字段 dt.Rows(0)("Pic")方法代碼。
4、字節(jié)數(shù)組轉(zhuǎn)換為Image類(lèi)型方法代碼。
5、處理SQL中操作Image類(lèi)型方法代碼。
6、實(shí)現(xiàn)的上傳結(jié)果。
分享題目:vb點(diǎn)虐
流式文件的簡(jiǎn)單介紹
本文網(wǎng)址:http://www.rwnh.cn/article36/ddgoesg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站制作、用戶體驗(yàn)、定制網(wǎng)站、網(wǎng)站營(yíng)銷(xiāo)、軟件開(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)