vb读取txt文件至textbox

来源:百度文库 编辑:神马文学网 时间:2024/03/29 18:23:25
vb读取txt文件到textbox
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 #filenumber,要写入的文本
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