1、vb读取txt文件 1.怎么通过代码创建一个文本文件,并读取,更新内容 以上为随即方式打开的文本文件 dim gfilenum as integer gfilenum = FreeFile Open "文件路径及文件名" For Random As gfilenum len=3 \'以随即方式打开一文件如果文件不存在就新建 用get #gfilenum ,记录在文件中位置,要放取得的数据的变量\'读取操作 用put #gfilenum ,记录在文件中位置,要放着要写入数据的变量\'写操作 close #filenum\'关闭文件 以下为顺序方式打开的文件 dim gf
2、ilenum 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()等读取更详
3、细的查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
4、操作就好了啊 再加上一个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 #TempFil
5、e,,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.p
6、ath &"/你的文本文件名.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.怎样读取一个文本文件的
7、全部内容 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 Skip
8、LineInFile 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.rea
9、dall 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.
10、把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.fil
11、ename 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 Inpu
12、t #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.OpenTextFil
13、e(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 \'解密 O
14、n 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
15、 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
16、 和 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.
17、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 = StrCo
18、nv(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的方法只能加在最后面 就用两
19、个文件合并好了 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.tx
20、t" 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 \'定义文本流
21、 \'打开文件 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 \
22、'要写的字符串。 tFileNumber=FreeFile tWriteStr=你需要的内容 Open pFileName For Append As #tFileNumber \'Append为在文件结尾顺序写文件夹。或者以Output模式打开,使用Seek(tFileNumberm,LOF(tFileNumber))也可以定义指针到文件结尾。 Print #tFileNumber,tWriteStr \'写到文件里。 Close #tFileNumber 如果文件上一行没有换行,将导致你写的第一行和原来文件最后一行接在一起。解决办法是: tWriteStr=Chr(13
23、) & Chr(10) & tWriteStr 在写第一行前加这一句,将导致在这行前加换行符号。 另外,假如你有100行要写的内容,那么你往文件写100次不如把100行合并成一个字符串一起写的好。写100行的时间比合并100行后写一次的时间要慢。 同时,不要多次Open Close地写文件。Open和Close都要重新分配缓冲区,导致程序速度下降。尽量在一次Open后,全部写完再Close,这样可以提高效率。 但是需要特别注意!在Close前,如果程序因某种原因非法关闭,那么可能要丢失数据。因为只有在Close后才将缓冲区里的信息真正全部保存。而没有Close的文件,可能有
24、部分内容在内存里没有存盘,这是很危险的。如果你确保在短时间内进行单一的操作,那么就在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
25、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 p
26、FileName For Input As #tFileNumber \'Input方式为顺序读文件。 Line Input #tFileNumber,tLoadStr \'Line Input语句为整行读取,否则如果只用Input则遇到逗号也算一个段落。如果你想读第12行,在不知道12行的位置的前提下,那要读12次的。 Close #tFileNumber 读文件指定行:读文件最大的问题就是判断文件的结束。如果超过文件结束,将产生错误。使用EOF函数可以判断“文件指针”是否到达文件结束位置。 方法一(传统方法): Dim tFileNumber As Integer Di
27、m 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 \'记数累加,读一行加一。
28、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(
29、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 +
30、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,
31、"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
32、 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 \'
33、包含文件的数组 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 访问
34、方法类似 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 f
35、ls = 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
36、 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
37、 \' 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)
38、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).Cr
39、eatedDate = 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) myFi
40、les(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






