vb读取txt文件分解讲解Word文档格式.docx
- 文档编号:16227229
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:15
- 大小:21.15KB
vb读取txt文件分解讲解Word文档格式.docx
《vb读取txt文件分解讲解Word文档格式.docx》由会员分享,可在线阅读,更多相关《vb读取txt文件分解讲解Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
再加上一个TextStream读取文件第一行就好了啊。
3.VB通过FileSystemObject,可以读取文本文件(.txt)。
对于.bat文件,VB可否直接读取?
bat也属于文本类文件
可以读取
不用FSO也行:
把文本文件内容读取TextBox:
DimTempFileAsLong
DimLoadBytes()AsByte
TempFile=FreeFile
Open文件名ForBinaryAs#TempFile
RedimLoadBytes(1ToLof(TempFile))AsByte
Get#TempFile,,LoadBytes
CloseTempFile
Text1.Text=StrConv(LoadBytes,vbUniCode)
把TextBox内容写入文本文件:
DimSaveBytes()AsByte
SaveBytes=StrConv(Text1.Text,vbFromUniCode)
Put#TempFile,,SaveBytes
4.
打开文本文件
openapp.path&
"
/你的文本文件名.txt"
foroutputas#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.怎样读取一个文本文件的全部内容
dimlenfileasinteger
dimfilenumasinteger
filenum=freefile()
open"
file.dat"
forinputasfilenum
lenfile=lof(#filenum)
strfile=input(lenfile,#filenum)\'
将所有数据放入变量strfile中
closefilenum
PrivateSubForm_Load()
ConstForReading=1,ForWriting=2
Dimfso,f
DimSkipLineInFileAsString
Setfso=CreateObject("
Scripting.FileSystemObject"
)
Setf=fso.OpenTextFile("
c:
\\testfile.txt"
ForWriting,True)
f.Write"
Helloworld!
&
vbCrLf&
VBScriptisfun!
ForReading)
SkipLineInFile=f.readall
Debug.PrintSkipLineInFile
EndSub
7.把文本文件内容读取TextBox:
8.把TextBox内容写入文本文件:
9.已知文本文件,要从中搜索一段特定的字符串信息。
如搜索[MAGIC_DATABASES],该怎么做?
dimstrasstring
opencommondialog1.filenameforinput#1
input#1,str
dimwhereasinteger
where=instr(str,"
magic_databases"
10.
LineInput#语句示例
本示例使用LineInput#语句从顺序文件中读入一行数据,并将该行数据赋予一个变量。
本示例假设TESTFILE文件内含数行文本数据。
DimTextLine
Open"
TESTFILE"
ForInputAs#1
打开文件。
DoWhileNotEOF
(1)
循环至文件尾。
LineInput#1,TextLine
读入一行数据并将其赋予某变量。
Debug.PrintTextLine
在立即窗口中显示数据。
Loop
Close#1
关闭文件。
11.如何操作“文本文件”
fso(Filesystemobject)对象集中的文件集合里有readline方法。
DimofAsObject
DimfsasObject
dimTextLineasstring
Setfs=createobject("
scripting.Filesystemobject"
setof=fs.OpenTextFile(app,path+"
\\myfile.aaa"
//myfile.aaa是一个文本文件
textling=of.readline
//如果你要读取第14行,可以用一个循环,跳过前面的13行,如下
dimlopasinteger
forlop=0to12
of.skip
next
//然后再读取
12.
搜索了一下,大家主要用两种方法对文本文件加密。
1.对文本文件的ASC码加减
2.用XOR函数
我发现都有问题举例
1.代码
PublicFunctionnnnn(ByValsAsString)AsString\'
解密
OnErrorResumeNext
DimssAsString,iAsByte,lensAsByte
lens=Len(s)
Fori=1Tolens
ss=ss&
Chr(Asc(Mid(s,i,1))-lens-i)
Next
nnnn=ss
EndFunction
PublicFunctionmmmm(ByValsAsString)AsString
加密
Chr(Asc(Mid(s,i,1))+lens+1)
mmmm=ss
当文件中有“!
~”时出错
XOR加密
DimIaslong
ForI=1ToUBound(LoadBytes)
LoadBytes(I)=LoadBytes(I)Xor&
HFF
NextI
13.怎么判断一个文本文件是否打开?
判断如果没打开就删除该文本文件!
要用到FileSystemObject对象的FileExists和deletefile方法
ifdir(myfile)="
thenexitsub
FileNumber=FreeFile
取得未使用的文件号。
OnErrorGoToErrorHandler
打开错误处理程序。
OpenMyFileForOutputAs#FileNumber
打开输出文件。
Kill"
试图删除已打开的文件。
ExitSub
退出程序,以避免进入错误处理程序。
ErrorHandler:
错误处理程序。
SelectCaseErr.Number
检查错误代号。
Case55
发生“文件已打开”的错误。
Close#FileNumber
关闭已打开的文件。
CaseElse
处理其他错误状态...
EndSelect
Resume
将执行返回到发生错误的语句。
14.打开一个文本文件怎样最快?
DimfnAsLong,tsAsString
fn=FreeFile
\\test.txt"
ForBinaryAs#fn
ts=StrConv(InputB(LOF(fn),#fn),vbUnicode)
Text1=ts
Close#fn
ts=Input(LOF(fn),#fn)
15.怎么判断文本文件读取到了最后一行?
用fsoTextStream.AtEndOfStream可以判断
16.如何在文本文件中插入一行字串?
用OpenForAppend的方法只能加在最后面
就用两个文件合并好了
Shell"
command/ccopyaa.txt+bb.txtcc.txt"
vbHide
但我觉的不是太好,你自己看看对你有没有帮助吧。
17.
TESTFILE.txt"
ForOutputAs#1
Write#1,"
HelloWorld"
写入以逗号隔开的数据。
Write#1,
写入空白行。
关闭文件
请问怎样在原先TESTFILE.txt增加HelloWorld(即不删除原先的内容)
ForAppendAs#1
Close#1
18.如何实现对文本文件任意一行的读写?
利用VB的FileSystemObjects(FSO)对象模型
要想对任一行读写,不用将前面内容顺序读出,但要用FSO对象的方法移动文件指针,具体方法如下:
1.在VB编辑器中引用“MicrosoftScriptingRunTime"
2.DimfsoAsNewFileSystemObject
定义FSO对象
DimtsAsTextStream
定义文本流
打开文件
Setts=fso.OpenTextFile("
ForWriting)
之后即可用ts的方法进行操作,可参见MSDN,以下简要说明:
读数据有:
Read、ReadLine、ReadAll
写数据有:
Write、WirteBlankLine、WirteLine
移动文件指针有:
Skip、SkipLine
操作完毕要关闭文件流
ts.close
19.在文件结尾写上新的行:
DimtFileNumberAsInteger
DimtWriteStrAsString\'
要写的字符串。
tFileNumber=FreeFile
tWriteStr=你需要的内容
OpenpFileNameForAppendAs#tFileNumber\'
Append为在文件结尾顺序写文件夹。
或者以Output模式打开,使用Seek(tFileNumberm,LOF(tFileNumber))也可以定义指针到文件结尾。
Print#tFileNumber,tWriteStr\'
写到文件里。
Close#tFileNumber
如果文件上一行没有换行,将导致你写的第一行和原来文件最后一行接在一起。
解决办法是:
tWriteStr=Chr(13)&
Chr(10)&
tWriteStr
在写第一行前加这一句,将导致在这行前加换行符号。
另外,假如你有100行要写的内容,那么你往文件写100次不如把100行合并成一个字符串一起写的好。
写100行的时间比合并100行后写一次的时间要慢。
同时,不要多次OpenClose地写文件。
Open和Close都要重新分配缓冲区,导致程序速度下降。
尽量在一次Open后,全部写完再Close,这样可以提高效率。
但是需要特别注意!
在Close前,如果程序因某种原因非法关闭,那么可能要丢失数据。
因为只有在Close后才将缓冲区里的信息真正全部保存。
而没有Close的文件,可能有部分内容在内存里没有存盘,这是很危险的。
如果你确保在短时间内进行单一的操作,那么就在Close前写过程。
如果需要长时间的复杂操作,就要多次OpenClose了。
在OpenClose之间进行存取操作将获得最快的效率,而分多次OpenClose获得最佳的安全。
此外还有一个诀窍:
如果你想在读一个文件同时写一个文件,那只要把它分别用两个方式打开。
Open"
1.txt"
ForInputAs#1
ForOutputAs#2
Print#2,"
小仙妹"
写1.txt
Seek#1,1
LineInput#1,Ld
读1.txt
Seek#1,1
如果去掉这句,你看看读第而次的时候会怎样?
(肯定出错了!
LineInput#1,Ld
Close#2
Close#1
典型的读文件:
DimtFileNumberAsInteger\'
文件号
DimtLoadStrAsString\'
读文件行的变量
tFileNumber=FreeFile
FreeFile是取当前闲置的文件号的函数。
实现自动分配一个文件号码。
这样使这段程序几乎可以兼容在程序所有的部分。
OpenpFileNameForInputAs#tFileNumber\'
Input方式为顺序读文件。
LineInput#tFileNumber,tLoadStr\'
LineInput语句为整行读取,否则如果只用Input则遇到逗号也算一个段落。
如果你想读第12行,在不知道12行的位置的前提下,那要读12次的。
读文件指定行:
读文件最大的问题就是判断文件的结束。
如果超过文件结束,将产生错误。
使用EOF函数可以判断“文件指针”是否到达文件结束位置。
方法一(传统方法):
DimtLoadStrAsString
DimtEndAsLong\'
你要读的行数。
DimtAddAsLong\'
记数
tEnd=12\'
假设你要读12行
OpenpFileNameForInputAs#tFileNumber
DoUntilEOF(tFileNumber)OrtAdd=tEnd\'
EOF函数是判断是否已经到了结尾或到了你想找的行。
LineInput#tFileNumber,tLoadStr
tAdd=tAdd+1\'
记数累加,读一行加一。
Loop
方法二(比较实用的):
FortAdd=1TotEnd
IfEOF(tFileNumber)ThenExitFor\'
到结尾则退出循环。
Next
以上都是我在编程当中总结出来的非常惨痛的教训,希望你不要步我后尘。
20.用FSO来读文本文件时怎样返回该文本文件的总行数?
Setopenfile=openfso.OpenTextFile(CommonDialog1.FileName)
StaticiAsInteger
i=0
DoWhileNotopenfile.AtEndOfLine
openfile.ReadLine
i=i+1
Loop
MsgBox"
共"
i&
行"
vbOKOnly,"
hello"
21.treeview能够生成两层以上的节点吗?
DimNodXAsNode
SetNodX=TreeView1.Nodes.Add(,,"
R"
"
ROOT"
SetNodX=TreeView1.Nodes.Add("
tvwChild,"
key1"
CHILD"
key2"
CHILD_CHILD"
NodX.EnsureVisible
22.怎样获得一个文件夹里的文件数,并且分别得到里面的文件名?
dimsTempasstring
dimsFileName(100)asstring
记录文件名
dimintTotalasinteger
文件总数
intTotal=0
sTemp=Dir$(Path&
\\*.*"
dowhilesTemp<
>
sFileName(intTotal)=sTemp
intTotal=intTotal+1
sTemp=Dir$
loop
23.取文件夹的文件名列表,并按修改时间排序?
添加[工程]--[引用]“MicrosoftScriptingRuntime”
OptionExplicit
PrivateTypetypFlieDate
NameAsString
CreatedDateAsDate
AccessedDateAsDate
ModifiedDateAsDate
EndType
PrivatemyFiles()AstypFlieDate
包含文件的数组
PrivateSubCommand1_Click()
DimnAsInteger
n=GetFolderFiles("
d:
\\"
1)
PrivateFunctionGetFolderFiles(PathAsString,OrderByAsInteger)AsInteger
path文件夹路径
orderby排序依据
1:
按创建时间
2:
按访问时间
3:
按修改时间
4:
按名称
返回文件夹中文件的个数
如果要计算子文件夹可以通过fldr.SubFolders访问,方法类似
DimtmpFileAstypFlieDate
DimnAsInteger,iAsInteger,jAsInteger
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vb 读取 txt 文件 分解 讲解
![提示](https://static.bdocx.com/images/bang_tan.gif)