vb讀取txt文件_第1頁
vb讀取txt文件_第2頁
vb讀取txt文件_第3頁
vb讀取txt文件_第4頁
vb讀取txt文件_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、vb 讀取 txt 文件1. 怎么通過代碼創(chuàng)建一個(gè)文本文件,并讀取,更新內(nèi)容 以上為隨即方式打開的文本文件 dim gfilenum as integer gfilenum = FreeFileOpen " 文件路徑及文件名 " For Random As gfilenum len=3' 以隨即方式打開一文件如果文件不存在就新建用 get #gfilenum , 記錄在文件中位置 , 要放取得的數(shù)據(jù)的變量 ' 讀取操作 用 put #gfilenum , 記錄在文件中位置 , 要放著要寫入數(shù)據(jù)的變量 ' 寫操作 close #filenum'

2、 關(guān)閉文件 以下為順序方式打開的文件 dim gfilenum as integer gfilenum = FreeFileOpen " 文件路徑及文件名 " For output As gfilenum ' 以寫入方式打開文本 print #gfilenum, 要寫入的文本 write #filenumber, 要寫入的文本dim gfilenum as integer gfilenum = FreeFile Open " 文件路徑及文件名 " For input As gfilenum ' 以讀出方式打開文本 input #gfile

3、num , 用來放讀取的內(nèi)容的內(nèi)存變量名 還可用 line input#,input() 等讀取更詳細(xì)的查 msdn2. VB 讀取文本文件時(shí),調(diào)用 TextStream 對(duì)象中使用 OpenTextFile 報(bào)錯(cuò)了。 如果是Set f = fs.OpenTextFile("E:tabletrace.txt", forreading, True, TristateUseDefault) 出現(xiàn)錯(cuò)誤:Run-time error '5':Invalid procedure call or argument如果是Set f = fs.OpenTextFile(&q

4、uot;E:tabletrace.txt)" 則不會(huì)報(bào)錯(cuò)。用文件對(duì)象啊 FileSystemControl 操作就好了啊 再加上一個(gè) TextStream 讀取文件第一行就好了啊。3. VB通過FileSystemObject,可以讀取文本文件(.txt)。對(duì)于.bat文件,VB可 否直接讀取 ?bat 也屬于文本類文件 可以讀取不用FSO也行: 把文本文件內(nèi)容讀取 TextBox :Dim TempFile As LongDim LoadBytes() As ByteTempFile=FreeFileOpen 文件名 For Binary As #TempFileRedim Loa

5、dBytes(1 To Lof(TempFile) As ByteGet #TempFile,LoadBytesClose TempFileText1.Text=StrConv(LoadBytes,vbUniCode)把 TextBox 內(nèi)容寫入文本文件:Dim TempFile As LongDim SaveBytes() As ByteSaveBytes=StrConv(Text1.Text,vbFromUniCode)TempFile=FreeFileOpen 文件名 For Binary As #TempFilePut #TempFile,SaveBytesClose TempFile

6、4. 打開文本文件 open app.path &"/ 你的文本文件名 .txt" for output as #1Message.Name=text1.textMessage.Phone=text2.textmessage.PostCode=text5.textPut #1,i,Message '( 此處 i=1, 如要多次寫入 , 可用循環(huán)設(shè)置 i 的值 ) close #1' 寫入的同時(shí)即已保存 查詢的話就取出文本里的內(nèi)容 , 用 instr() 函數(shù)就可實(shí)現(xiàn)了5. 查找 vbCrLf 、vbLf 換行標(biāo)記6. 怎樣讀取一個(gè)文本文件的全部?jī)?nèi)容d

7、im lenfile as integer dim filenum as integer filenum=freefile() open "file.dat" for input as filenum將所有數(shù)據(jù)放入變量 strfile 中l(wèi)enfile=lof(#filenum) strfile=input(lenfile,#filenum)' close filenumPrivate Sub Form_Load()Const ForReading = 1, ForWriting = 2Dim fso, fDim SkipLineInFile As StringSe

8、t fso = CreateObject("Scripting.FileSystemObject")Set f = fso.OpenTextFile("c:testfile.txt", ForWriting, True)f.Write "Hello world!" & vbCrLf & "VB Script is fun!"Set f = fso.OpenTextFile("c:testfile.txt", ForReading)SkipLineInFile = f.readal

9、lDebug.Print SkipLineInFileEnd Sub7. 把文本文件內(nèi)容讀取 TextBox:Dim TempFile As LongDim LoadBytes() As ByteTempFile=FreeFileOpen 文件名 For Binary As #TempFileRedim LoadBytes(1 To Lof(TempFile) As ByteGet #TempFile,LoadBytesClose TempFileText1.Text=StrConv(LoadBytes,vbUniCode)8. 把 TextBox 內(nèi)容寫入文本文件:Dim TempFile

10、As LongDim SaveBytes() As ByteSaveBytes=StrConv(Text1.Text,vbFromUniCode)TempFile=FreeFileOpen 文件名 For Binary As #TempFilePut #TempFile,SaveBytesClose TempFile9. 已知文本文件,要從中搜索一段特定的字符串信息。如搜索MAGIC_DATABASES, 該怎么做 ?dim str as stringopen commondialog1.filename for input #1input #1, strdim where as in teg

11、er where = in str(str,"magic_databases") 10.Line In put #語句示例本示例使用Line In put #語句從順序文件中讀入一行數(shù)據(jù),并將該行數(shù)據(jù)賦予 一個(gè)變量。本示例假設(shè)TESTFILE文件內(nèi)含數(shù)行文本數(shù)據(jù)。Dim TextL ineOpe n "TESTFILE" For In put As #1 '打開文件。Do While Not EOF(1) '循環(huán)至文件尾。Line In put #1, TextL ine '讀入一行數(shù)據(jù)并將其賦予某變量Debug.Pri nt T

12、extLi ne '在立即窗口中顯示數(shù)據(jù)。LoopClose #1 ' 關(guān)閉文件。11.如何操作“文本文件”fso(Filesystemobject)對(duì)象集中的文件集合里有 readline方法。Dim of As ObjectDim fs as Object dim TextL ine as stri ngSet fs=createobject("scripti ng.Filesystemobject") set of=fs.Ope nTextFile(app,path+" Wmyfile.aaa ") /myfile.aaa是一個(gè)文本

13、文件textl in g=of.readli ne/如果你要讀取第14行,可以用一個(gè)循環(huán),跳過前面的13行,如下dim lop as in tegerfor lop=0 to 12of.skipn ext/然后再讀取12.搜索了一下,大家主要用兩種方法對(duì)文本文件加密。1. 對(duì)文本文件的ASC碼加減2. 用XOF函數(shù)我發(fā)現(xiàn)都有問題舉例1代碼Public Fun ction nnnn (ByVai s As Stri ng) As Stri ng '解密On Error Resume NextDim ss As Strin g, i As Byte, le ns As Bytelens =

14、 Len(s)For i = 1 To lensss = ss & Chr(Asc(Mid(s, i, 1) - lens - i) Next nnnn = ss End FunctionPublic Function mmmm(ByVal s As String) As String ' 加密On Error Resume NextDim ss As String, i As Byte, lens As Bytelens = Len(s)For i = 1 To lensss = ss & Chr(Asc(Mid(s, i, 1) + lens + 1)Nextmmm

15、m = ssEnd Function當(dāng)文件中有“! ”時(shí)出錯(cuò)XOF加密Dim I as longFor I=1 To UBound(LoadBytes)LoadBytes(I)=LoadBytes(I) Xor &HFFNext I13. 怎么判斷一個(gè)文本文件是否打開? 判斷如果沒打開就刪除該文本文件! 要用到 FileSystemObject 對(duì)象的 FileExists 和 deletefile 方法if dir(myfile)="" then exit subFileNumber = FreeFile ' 取得未使用的文件號(hào)。On Error GoTo

16、 ErrorHandler ' 打開錯(cuò)誤處理程序。Open MyFile For Output As #FileNumber '打開輸出文件。Kill "TESTFILE" ' 試圖刪除已打開的文件。Exit Sub ' 退出程序,以避免進(jìn)入錯(cuò)誤處理程序。ErrorHandler: ' 錯(cuò)誤處理程序。Select Case Err.Number ' 檢查錯(cuò)誤代號(hào)。Case 55 ' 發(fā)生“文件已打開”的錯(cuò)誤。Close #FileNumber ' 關(guān)閉已打開的文件。Case Else' 處理其他錯(cuò)誤狀態(tài)

17、 . . .End SelectResume ' 將執(zhí)行返回到發(fā)生錯(cuò)誤的語句。14. 打開一個(gè)文本文件怎樣最快?Dim fn As Long, ts As Stringfn = FreeFileOpen "c:test.txt" For Binary As #fnts = StrConv(InputB(LOF(fn), #fn), vbUnicode)Text1 = tsClose #fnDim fn As Long, ts As Stringfn = FreeFileOpen "c:test.txt" For Binary As #fnts =

18、 Input(LOF(fn), #fn)Text1 = tsClose #fn15. 怎么判斷文本文件讀取到了最后一行?用 fsoTextStream.AtEndOfStream 可以判斷16. 如何在文本文件中插入一行字串?用 Open For Append 的方法只能加在最后面就用兩個(gè)文件合并好了Shell "command /c copy aa.txt + bb.txt cc.txt ", vbHide 但我覺的不是太好,你自己看看對(duì)你有沒有幫助吧。17.Open "TESTFILE.txt" For Output As #1 ' 打開輸出

19、文件。Write #1, "Hello World", '寫入以逗號(hào)隔開的數(shù)據(jù)。Write #1, ' 寫入空白行。Close #1 ' 關(guān)閉文件請(qǐng)問怎樣在原先 TESTFILE.txt 增加 Hello World (即不刪除原先的內(nèi)容)Open "TESTFILE.txt" For Append As #1Write #1, "Hello World",Close #118. 如何實(shí)現(xiàn)對(duì)文本文件任意一行的讀寫?利用 VB 的 File System Objects (FSO 對(duì)象模型要想對(duì)任一行讀寫,不用將

20、前面內(nèi)容順序讀出,但要用FSO對(duì)象的方法移動(dòng)文件 指針,具體方法如下:1. 在 VB 編輯器中引用“ Microsoft Script ing Run Time"2. Dim fso As New FileSystemObject '定義 FSC對(duì)象Dim ts As TextStream'定義文本流' 打開文件Set ts = fso.OpenTextFile("c:test.txt", ForWriting)之后即可用 ts 的方法進(jìn)行操作,可參見 MSD,N 以下簡(jiǎn)要說明: 讀數(shù)據(jù)有: Read、 ReadLine、ReadAll寫數(shù)

21、據(jù)有: Write 、WirteBlankLine 、WirteLine 移動(dòng)文件指針有: Skip 、SkipLine操作完畢要關(guān)閉文件流ts.close19. 在文件結(jié)尾寫上新的行:Dim tFileNumber As IntegerDim tWriteStr As String '要寫的字符串。tFileNumber=FreeFile tWriteStr= 你需要的內(nèi)容Open pFileName For Append As #tFileNumber 'Append為在文件結(jié)尾順序?qū)懳募A?;蛘咭?Output 模式打開,使用 Seek(tFileNumberm,LOF(

22、tFileNumber) 也可以定義指針到文件結(jié)尾。Print #tFileNumber,tWriteStr '寫到文件里。Close #tFileNumber如果文件上一行沒有換行,將導(dǎo)致你寫的第一行和原來文件最后一行接在一起。 解決辦法是:tWriteStr=Chr(13) & Chr(10) & tWriteStr在寫第一行前加這一句,將導(dǎo)致在這行前加換行符號(hào)另外,假如你有 100 行要寫的內(nèi)容, 那么你往文件寫 100 次不如把 100行合 并成一個(gè)字符串一起寫的好。 寫 100行的時(shí)間比合并 100行后寫一次的時(shí)間要慢。同時(shí),不要多次OpenClose地寫文件

23、。Open和Close都要重新分配緩沖區(qū), 導(dǎo)致程序速度下降。盡量在一次 Open后,全部寫完再Close,這樣可以提高效 率。但是需要特別注意! 在 Close 前,如果程序因某種原因非法關(guān)閉, 那么可能 要丟失數(shù)據(jù)。因?yàn)橹挥性?Close 后才將緩沖區(qū)里的信息真正全部保存。而沒有 Close 的文件,可能有部分內(nèi)容在內(nèi)存里沒有存盤,這是很危險(xiǎn)的。如果你確保 在短時(shí)間內(nèi)進(jìn)行單一的操作, 那么就在 Close 前寫過程。 如果需要長(zhǎng)時(shí)間的復(fù)雜 操作,就要多次 Open Close 了。在 OpenClose 之間進(jìn)行存取操作將獲得最快的效率, 而分多次 OpenClose 獲得最佳的安全。此外

24、還有一個(gè)訣竅:如果你想在讀一個(gè)文件同時(shí)寫一個(gè)文件, 那只要把它分別用兩個(gè)方式打開。Open "1.txt" For Input As #1Open "1.txt" For Output As #2Print #2,"小仙妹 " ' 寫 1.txtSeek #1,1Line Input #1,Ld ' 讀 1.txtSeek #1,1 ' 如果去掉這句,你看看讀第而次的時(shí)候會(huì)怎樣?(肯定出 錯(cuò)了!)Line Input #1,LdClose #2Close #1典型的讀文件:Dim tFileNumber As

25、Integer ' 文件號(hào)Dim tLoadStr As String ' 讀文件行的變量 tFileNumber=FreeFile 'FreeFile 是取當(dāng)前閑置的文件號(hào)的函數(shù)。 實(shí)現(xiàn) 自動(dòng)分配一個(gè)文件號(hào)碼。這樣使這段程序幾乎可以兼容在程序所有的部分。Open pFileName For Input As #tFileNumber 'Input 方式為順序讀文件。Line Input #tFileNumber,tLoadStr 'Line Input 語句為整行讀取,否則 如果只用 Input 則遇到逗號(hào)也算一個(gè)段落。如果你想讀第 12 行,在不知道

26、 12 行的位置的前提下,那要讀 12 次的。Close #tFileNumber讀文件指定行: 讀文件最大的問題就是判斷文件的結(jié)束。 如果超過文件結(jié)束, 將 產(chǎn)生錯(cuò)誤。使用EOF函數(shù)可以判斷“文件指針”是否到達(dá)文件結(jié)束位置。方法一(傳統(tǒng)方法):Dim tFileNumber As IntegerDim tLoadStr As StringDim tEnd As Long ' 你要讀的行數(shù)。Dim tAdd As Long ' 記數(shù) tFileNumber=FreeFile tEnd=12 ' 假設(shè)你要讀 12行Open pFileName For Input As #

27、tFileNumberDo Until EOF(tFileNumber) Or tAdd=tEnd 'EOF函數(shù)是判斷是否已經(jīng)到了結(jié)尾或到了你想找的行。Line Input #tFileNumber,tLoadStrtAdd=tAdd+1 ' 記數(shù)累加,讀一行加一。LoopClose #tFileNumber方法二(比較實(shí)用的):Dim tFileNumber As IntegerDim tLoadStr As StringDim tEnd As Long ' 你要讀的行數(shù)。Dim tAdd As Long ' 記數(shù) tFileNumber=FreeFiletE

28、nd=12 ' 假設(shè)你要讀 12 行Open pFileName For Input As #tFileNumberFor tAdd=1 To tEndLine Input #tFileNumber,tLoadStrIf EOF(tFileNumber) Then Exit For ' 到結(jié)尾則退出循環(huán)。 NextClose #tFileNumber以上都是我在編程當(dāng)中總結(jié)出來的非常慘痛的教訓(xùn),希望你不要步我后塵20. 用FSO來讀文本文件時(shí)怎樣返回該文本文件的總行數(shù)?Set openfile = openfso.OpenTextFile(CommonDialog1.FileN

29、ame) Static i As Integeri = 0Do While Not openfile.AtEndOfLine openfile.ReadLinei = i + 1LoopMsgBox " 共" & i & "行", vbOKOnly, "hello"21. treeview 能夠生成兩層以上的節(jié)點(diǎn)嗎?Private Sub Form_Load()Dim NodX As NodeSet NodX = TreeView1.Nodes.Add(, , "R", "ROOT&quo

30、t;)Set NodX = TreeView1.Nodes.Add("R", tvwChild, "key1", "CHILD")Set NodX = TreeView1.Nodes.Add("key1", tvwChild, "key2", "CHILD_CHILD")NodX.EnsureVisibleEnd Sub22. 怎樣獲得一個(gè)文件夾里的文件數(shù) , 并且分別得到里面的文件名 ? dim sTemp as stringdim sFileName(100) as st

31、ring ' 記錄文件名dim intTotal as integer '文件總數(shù)intTotal=0sTemp=Dir$(Path & "*.*") do while sTemp<>""sFileName(intTotal)=sTemp intTotal=intTotal+1 sTemp=Dir$loop23. 取文件夾的文件名列表,并按修改時(shí)間排序?' 添加工程- 引用 “Microsoft Scripting RuntimeOption ExplicitPrivate Type typFlieDateNa

32、me As String CreatedDate As Date AccessedDate As Date ModifiedDate As DateEnd TypePrivate myFiles() As typFlieDate ' 包含文件的數(shù)組Private Sub Command1_Click()Dim n As Integern = GetFolderFiles("d:", 1)End SubPrivate Function GetFolderFiles(Path As String, OrderBy As Integer) AsInteger'pa

33、th 文件夾路徑'orderby 排序依據(jù) 1 :按創(chuàng)建時(shí)間 2 :按訪問時(shí)間 3 :按修改時(shí)間 4 : 按名稱' 返回文件夾中文件的個(gè)數(shù)' 如果要計(jì)算子文件夾可以通過 fldr.SubFolders 訪問,方法類似Dim tmpFile As typFlieDateDim n As Integer, i As Integer, j As IntegerDim fso As New FileSystemObjectDim fldr As FolderDim fls As FilesDim fl As File' 讀去文件Set fso = CreateObjec

34、t("Scripting.FileSystemObject")Set fldr = fso.GetFolder(Path)Set fls = fldr.Filesn = fls.CountIf n > 0 ThenReDim myFiles(n - 1)i = 0For Each fl In flsmyFiles(i).Name = fl.Name myFiles(i).AccessedDate = fl.DateLastAccessed myFiles(i).CreatedDate = fl.DateCreated myFiles(i).ModifiedDate = fl.DateLastModifiedi = i + 1Next' 排序 - 升序For i = 0 To n - 1For j = i + 1 To n - 1Select Case OrderByCase 1 ' 創(chuàng)建時(shí)間If myFiles(i).CreatedDate > myFiles(j).CreatedDate The

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論