收藏 分销(赏)

vb读取txt文件.doc

上传人:1587****927 文档编号:1646568 上传时间:2024-05-07 格式:DOC 页数:12 大小:55.51KB 下载积分:8 金币
下载 相关 举报
vb读取txt文件.doc_第1页
第1页 / 共12页
vb读取txt文件.doc_第2页
第2页 / 共12页


点击查看更多>>
资源描述
vb读取txt文件 1.怎么通过代码创建一个文本文件,并读取,更新内容 以上为随即方式打开的文本文件 dim gfilenum as integer gfilenum = FreeFile Open   "文件路径及文件名" For Random As gfilenum len=3 \'以随即方式打开一文件如果文件不存在就新建 用get #gfilenum ,记录在文件中位置,要放取得的数据的变量\'读取操作 用put #gfilenum ,记录在文件中位置,要放着要写入数据的变量\'写操作 close #filenum\'关闭文件 以下为顺序方式打开的文件 dim gfilenum as integer gfilenum = FreeFile Open   "文件路径及文件名" For output As gfilenum \'以写入方式打开文本 print #gfilenum,要写入的文本 write #filenum,要写入的文本 dim gfilenum as integer gfilenum = FreeFile Open   "文件路径及文件名" For input As gfilenum \'以读出方式打开文本 input #gfilenum ,用来放读取的内容的内存变量名 还可用line input#,input()等读取更详细的查msdn 2.VB读取文本文件时,调用TextStream 对象中使用OpenTextFile报错了。 如果是 Set f = fs.OpenTextFile("E:\\table\\trace.txt", forreading, True, TristateUseDefault) 出现错误: Run-time error \'5\': Invalid procedure call or argument 如果是 Set f = fs.OpenTextFile("E:\\table\\trace.txt)" 则不会报错。 用文件对象啊FileSystemControl操作就好了啊 再加上一个TextStream读取文件第一行就好了啊。 3.VB通过FileSystemObject,可以读取文本文件(.txt)。对于.bat文件,VB可否直接读取? bat也属于文本类文件 可以读取 不用FSO也行: 把文本文件内容读取TextBox: Dim TempFile As Long Dim LoadBytes() As Byte TempFile=FreeFile Open 文件名 For Binary As #TempFile Redim LoadBytes(1 To Lof(TempFile)) As Byte Get #TempFile,,LoadBytes Close TempFile Text1.Text=StrConv(LoadBytes,vbUniCode) 把TextBox内容写入文本文件: Dim TempFile As Long Dim SaveBytes() As Byte SaveBytes=StrConv(Text1.Text,vbFromUniCode) TempFile=FreeFile Open 文件名 For Binary As #TempFile Put #TempFile,,SaveBytes Close TempFile 4. 打开文本文件 open app.path &"/你的文本文件名.txt" for output as #1      Message.Name=text1.text      Message.Phone=text2.text      .......................      message.PostCode=text5.text Put #1,i,Message   \'(此处i=1,如要多次写入,可用循环设置i的值) close #1 \'写入的同时即已保存 查询的话就取出文本里的内容,用instr()函数就可实现了 5. 查找vbCrLf、vbLf换行标记 6.怎样读取一个文本文件的全部内容 dim lenfile as integer dim filenum as integer filenum=freefile() open "file.dat" for input as filenum lenfile=lof(#filenum) strfile=input(lenfile,#filenum)\'将所有数据放入变量strfile中 close filenum Private Sub Form_Load()      Const ForReading = 1, ForWriting = 2      Dim fso, f      Dim SkipLineInFile As String      Set 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.readall      Debug.Print SkipLineInFile End Sub 7.把文本文件内容读取TextBox: Dim TempFile As Long Dim LoadBytes() As Byte TempFile=FreeFile Open 文件名 For Binary As #TempFile Redim LoadBytes(1 To Lof(TempFile)) As Byte Get #TempFile,,LoadBytes Close TempFile Text1.Text=StrConv(LoadBytes,vbUniCode) 8. 把TextBox内容写入文本文件: Dim TempFile As Long Dim SaveBytes() As Byte SaveBytes=StrConv(Text1.Text,vbFromUniCode) TempFile=FreeFile Open 文件名 For Binary As #TempFile Put #TempFile,,SaveBytes Close TempFile 9.已知文本文件,要从中搜索一段特定的字符串信息。如搜索[MAGIC_DATABASES],该怎么做? dim str as string open commondialog1.filename for input #1 input #1, str dim where as integer where = instr(str,"magic_databases") 10. Line Input # 语句示例 本示例使用 Line Input # 语句从顺序文件中读入一行数据,并将该行数据赋予一个变量。本示例假设 TESTFILE 文件内含数行文本数据。 Dim TextLine Open "TESTFILE" For Input As #1   \' 打开文件。 Do While Not EOF(1)   \' 循环至文件尾。      Line Input #1, TextLine   \' 读入一行数据并将其赋予某变量。      Debug.Print TextLine   \' 在立即窗口中显示数据。 Loop Close #1   \' 关闭文件。 11.如何操作“文本文件” fso(Filesystemobject)对象集中的文件集合里有readline方法。 Dim of As Object Dim fs as Object dim TextLine as string Set fs=createobject("scripting.Filesystemobject") set of=fs.OpenTextFile(app,path+"\\myfile.aaa") //myfile.aaa 是一个文本文件 textling=of.readline //如果你要读取第14行,可以用一个循环,跳过前面的13行,如下 dim lop as integer for lop=0 to 12    of.skip next //然后再读取 12. 搜索了一下,大家主要用两种方法对文本文件加密。 1.对文本文件的ASC码加减 2.用XOR函数 我发现都有问题举例 1.代码 Public Function nnnn(ByVal s As String) As String \'解密 On Error Resume Next Dim ss As String, i As Byte, lens As Byte lens = Len(s) For i = 1 To lens    ss = ss & Chr(Asc(Mid(s, i, 1)) - lens - i) Next nnnn = ss End Function Public Function mmmm(ByVal s As String) As String   \'加密 On Error Resume Next Dim ss As String, i As Byte, lens As Byte lens = Len(s) For i = 1 To lens    ss = ss & Chr(Asc(Mid(s, i, 1)) + lens + 1) Next mmmm = ss End Function 当文件中有“!~”时出错 XOR加密 Dim I as long For I=1 To UBound(LoadBytes)    LoadBytes(I)=LoadBytes(I) Xor &HFF Next I 13.怎么判断一个文本文件是否打开? 判断如果没打开就删除该文本文件! 要用到FileSystemObject 对象的 FileExists 和 deletefile方法 if dir(myfile)="" then exit sub FileNumber = FreeFile   \' 取得未使用的文件号。 On Error GoTo ErrorHandler   \' 打开错误处理程序。 Open MyFile For Output As #FileNumber   \' 打开输出文件。 Kill "TESTFILE"   \' 试图删除已打开的文件。 Exit Sub   \' 退出程序,以避免进入错误处理程序。 ErrorHandler:   \' 错误处理程序。      Select Case Err.Number   \' 检查错误代号。      Case 55   \' 发生“文件已打开”的错误。      Close #FileNumber       \' 关闭已打开的文件。      Case Else      \' 处理其他错误状态 . . .      End Select      Resume   \' 将执行返回到发生错误的语句。 14.打开一个文本文件怎样最快? Dim fn As Long, ts As String fn = FreeFile Open "c:\\test.txt" For Binary As #fn ts = StrConv(InputB(LOF(fn), #fn), vbUnicode) Text1 = ts Close #fn Dim fn As Long, ts As String fn = FreeFile Open "c:\\test.txt" For Binary As #fn ts = Input(LOF(fn), #fn) Text1 = ts Close #fn 15.怎么判断文本文件读取到了最后一行? 用fsoTextStream.AtEndOfStream可以判断 16.如何在文本文件中插入一行字串? 用Open For Append的方法只能加在最后面 就用两个文件合并好了 Shell "command /c copy aa.txt + bb.txt cc.txt ", vbHide 但我觉的不是太好,你自己看看对你有没有帮助吧。 17. Open "TESTFILE.txt" For Output As #1   \' 打开输出文件。 Write #1, "Hello World",   \' 写入以逗号隔开的数据。 Write #1,   \' 写入空白行。 Close #1   \' 关闭文件 请问怎样在原先TESTFILE.txt增加Hello World(即不删除原先的内容)    Open "TESTFILE.txt" For Append As #1 Write #1, "Hello World", Close #1 18.如何实现对文本文件任意一行的读写? 利用VB的File System Objects(FSO)对象模型 要想对任一行读写,不用将前面内容顺序读出,但要用FSO对象的方法移动文件指针,具体方法如下: 1. 在VB编辑器中引用“Microsoft Scripting RunTime" 2. Dim fso As New FileSystemObject   \'定义FSO对象      Dim ts As TextStream               \'定义文本流      \'打开文件      Set ts = fso.OpenTextFile("c:\\test.txt", ForWriting) 之后即可用ts的方法进行操作,可参见MSDN,以下简要说明:    读数据有:Read、ReadLine、ReadAll    写数据有:Write、WirteBlankLine、WirteLine    移动文件指针有:Skip、SkipLine 操作完毕要关闭文件流    ts.close 19.在文件结尾写上新的行: Dim tFileNumber As Integer Dim tWriteStr As String \'要写的字符串。 tFileNumber=FreeFile tWriteStr=你需要的内容 Open pFileName For Append As #tFileNumber \'Append为在文件结尾顺序写文件夹。或者以Output模式打开,使用Seek(tFileNumberm,LOF(tFileNumber))也可以定义指针到文件结尾。    Print #tFileNumber,tWriteStr \'写到文件里。 Close #tFileNumber 如果文件上一行没有换行,将导致你写的第一行和原来文件最后一行接在一起。解决办法是: tWriteStr=Chr(13) & Chr(10) & tWriteStr 在写第一行前加这一句,将导致在这行前加换行符号。   另外,假如你有100行要写的内容,那么你往文件写100次不如把100行合并成一个字符串一起写的好。写100行的时间比合并100行后写一次的时间要慢。   同时,不要多次Open Close地写文件。Open和Close都要重新分配缓冲区,导致程序速度下降。尽量在一次Open后,全部写完再Close,这样可以提高效率。   但是需要特别注意!在Close前,如果程序因某种原因非法关闭,那么可能要丢失数据。因为只有在Close后才将缓冲区里的信息真正全部保存。而没有Close的文件,可能有部分内容在内存里没有存盘,这是很危险的。如果你确保在短时间内进行单一的操作,那么就在Close前写过程。如果需要长时间的复杂操作,就要多次Open Close了。      在Open Close之间进行存取操作将获得最快的效率,而分多次Open Close获得最佳的安全。此外还有一个诀窍:如果你想在读一个文件同时写一个文件,那只要把它分别用两个方式打开。    Open "1.txt" For Input As #1    Open "1.txt" For Output As #2      Print #2,"小仙妹" \'写1.txt      Seek #1,1      Line Input #1,Ld   \'读1.txt      Seek #1,1   \'如果去掉这句,你看看读第而次的时候会怎样?(肯定出错了!)      Line Input #1,Ld    Close #2    Close #1 典型的读文件: Dim tFileNumber As Integer \'文件号 Dim tLoadStr As String \'读文件行的变量 tFileNumber=FreeFile       \'FreeFile是取当前闲置的文件号的函数。实现自动分配一个文件号码。这样使这段程序几乎可以兼容在程序所有的部分。 Open pFileName For Input As #tFileNumber \'Input方式为顺序读文件。    Line Input #tFileNumber,tLoadStr \'Line Input语句为整行读取,否则如果只用Input则遇到逗号也算一个段落。如果你想读第12行,在不知道12行的位置的前提下,那要读12次的。 Close #tFileNumber 读文件指定行:读文件最大的问题就是判断文件的结束。如果超过文件结束,将产生错误。使用EOF函数可以判断“文件指针”是否到达文件结束位置。 方法一(传统方法): Dim tFileNumber As Integer Dim tLoadStr As String Dim tEnd As Long \'你要读的行数。 Dim tAdd As Long \'记数 tFileNumber=FreeFile tEnd=12 \'假设你要读12行 Open pFileName For Input As #tFileNumber    Do Until EOF(tFileNumber) Or tAdd=tEnd \'EOF函数是判断是否已经到了结尾或到了你想找的行。    Line Input #tFileNumber,tLoadStr    tAdd=tAdd+1 \'记数累加,读一行加一。    Loop Close #tFileNumber 方法二(比较实用的): Dim tFileNumber As Integer Dim tLoadStr As String Dim tEnd As Long \'你要读的行数。 Dim tAdd As Long \'记数 tFileNumber=FreeFile tEnd=12 \'假设你要读12行 Open pFileName For Input As #tFileNumber    For tAdd=1 To tEnd    Line Input #tFileNumber,tLoadStr    If EOF(tFileNumber) Then Exit For \'到结尾则退出循环。    Next Close #tFileNumber 以上都是我在编程当中总结出来的非常惨痛的教训,希望你不要步我后尘。 20.用FSO来读文本文件时怎样返回该文本文件的总行数? Set openfile = openfso.OpenTextFile(CommonDialog1.FileName)    Static i As Integer    i = 0    Do While Not openfile.AtEndOfLine    openfile.ReadLine    i = i + 1    Loop    MsgBox "共" & i & "行", vbOKOnly, "hello" 21.treeview 能够生成两层以上的节点吗? Private Sub Form_Load()    Dim NodX As Node    Set NodX = TreeView1.Nodes.Add(, , "R", "ROOT")    Set NodX = TreeView1.Nodes.Add("R", tvwChild, "key1", "CHILD")    Set NodX = TreeView1.Nodes.Add("key1", tvwChild, "key2", "CHILD_CHILD")    NodX.EnsureVisible End Sub 22.怎样获得一个文件夹里的文件数,并且分别得到里面的文件名? dim sTemp as string dim sFileName(100) as string   \'记录文件名 dim intTotal as integer   \'文件总数 intTotal=0 sTemp=Dir$(Path & "\\*.*") do while sTemp<>""      sFileName(intTotal)=sTemp      intTotal=intTotal+1      sTemp=Dir$ loop 23.取文件夹的文件名列表,并按修改时间排序? \'添加[工程]--[引用] “Microsoft Scripting Runtime” Option Explicit Private Type typFlieDate        Name As String        CreatedDate As Date        AccessedDate As Date        ModifiedDate As Date    End Type Private myFiles() As typFlieDate   \'包含文件的数组 Private Sub Command1_Click()    Dim n As Integer    n = GetFolderFiles("d:\\", 1) End Sub Private Function GetFolderFiles(Path As String, OrderBy As Integer) As Integer \'path 文件夹路径 \'orderby 排序依据   1:按创建时间   2:按访问时间   3:按修改时间   4:按名称 \'返回文件夹中文件的个数 \'如果要计算子文件夹可以通过 fldr.SubFolders 访问,方法类似    Dim tmpFile As typFlieDate    Dim n As Integer, i As Integer, j As Integer    Dim fso As New FileSystemObject    Dim fldr As Folder    Dim fls As Files    Dim fl As File     \'读去文件    Set fso = CreateObject("Scripting.FileSystemObject")    Set fldr = fso.GetFolder(Path)    Set fls = fldr.Files    n = fls.Count    If n > 0 Then    ReDim myFiles(n - 1)    i = 0    For Each fl In fls      myFiles(i).Name = fl.Name      myFiles(i).AccessedDate = fl.DateLastAccessed      myFiles(i).CreatedDate = fl.DateCreated      myFiles(i).ModifiedDate = fl.DateLastModified      i = i + 1    Next \'排序     ---   升序    For i = 0 To n - 1      For j = i + 1 To n - 1    Select Case OrderBy      Case 1         \'创建时间      If myFiles(i).CreatedDate > myFiles(j).CreatedDate Then        tmpFile = myFiles(i)        myFiles(i) = myFiles(j)        myFiles(j) = tmpFile       \'               tmpFile.Name = myFiles(i).Name \'               tmpFile.AccessedDate = myFiles(i).AccessedDate \'               tmpFile.CreatedDate = myFiles(i).CreatedDate \'               tmpFile.ModifiedDate = myFiles(i).ModifiedDate \' \'               myFiles(i).AccessedDate = myFiles(j).AccessedDate \'               myFiles(i).CreatedDate = myFiles(j).CreatedDate \'               myFiles(i).ModifiedDate = myFiles(j).ModifiedDate \'               myFiles(i).Name = myFiles(j).Name \' \'               myFiles(j).AccessedDate = tmpFile.AccessedDate \'               myFiles(j).CreatedDate = tmpFile.CreatedDate \'               myFiles(j).ModifiedDate = tmpFile.ModifiedDate \'               myFiles(j).Name = tmpFile.Name      End If            Case 2         \'访问时间      If myFiles(i).AccessedDate > myFiles(j).AccessedDate Then        tmpFile = myFiles(i)        myFiles(i) = myFiles(j)        myFiles(j) = tmpFile      End If      Case 3         \'修改时间      If myFiles(i).ModifiedDate > myFiles(j).ModifiedDate Then        tmpFile = myFiles(i)        myFiles(i) = myFiles(j)        myFiles(j) = tmpFile      End If      Case 4         \'名称      If UCase(myFiles(i).Name) > UCase(myFiles(j).Name) Then        tmpFile = myFiles(i)        myFiles(i) = myFiles(j)        myFiles(j) = tmpFile      End If    End Select      Next j    Next i    End If    GetFolderFiles = n End Function
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服