VB读写文件2

来源:互联网 发布:linux安装内核源码 编辑:程序博客网 时间:2024/05/22 02:22
Re:VB读写文件 ( 发表时间:2006-6-2 10:21:11 )
3楼
commondialog.action是用来定义对话框的类型的
action=1 打开文件对话框
action=2 另存为文件对话框
action=3 颜色对话框
action=4 字体对话框
action=5 打印对话框 
Re:VB读写文件 ( 发表时间:2006-6-2 10:58:53 )
4楼
打开文本文件是不少程序必须处理的问题。如何更有效地打开文本文件应该是一个值得研究的课题。为此,笔者将自己搜集到的几种方法无私地奉献出来(-_-),供各位参考。同时期盼大家也来参与,借VB编程乐园这块宝地互相交流。如您有这份心,土人在这里先说声谢谢!
下面所举的例子均假设F盘下有一个名为d.txt的文本文件,若需要尝试这些例子请作相应的改动。

方法一:
用定长的String变量获取文本内容。由于定长String变量支持的下界为65400,所以在打开超过32K字节的文件时超出部分的字节将无法获取:
Private Sub Command1_Cliack()
Dim sA As String * 65400 '声明定长String变量
Open "F:/d.txt" For Binary As #1 '用二进制打开文件
Get #1, , sA '用Get语句从文件中获取字节
Text1 = sA '显示打开的文件
Close #1 '关闭文件
End Sub

方法二:
先声明一字符串变量,然后用空格填充字符串,使变量大小与文件大小一致,再通过Get语句将文件全部数据存储到变量中,从而达到获取整个文件字节数的目的。此法可以打开大于32K的文件,但应该注意的是,装载文件的容器必须能装载大于32K的文件,下例用RichTextBox控件显示打开的文件:
Private Sub Command1_Click()
Dim sA As String
Open "f:/d.txt" For Binary As #1
sA = Space(LOF(1)) '用空格填充sA变量
Get #1, , sA '用Get语句获取文件全部内容
RichTextBox1.Text = sA
Close #1
End Sub

方法三:
用StrConv函数将文件的控制字符串数据和Unicode码之间进行转换,从而达到打开文件的目的。可打开任意大小文件。此法笔者曾有一篇文章谈及,这里再给一个简单例子:
Private Sub Command1_Click()
Open "f:/d.txt" For Input As #1
RichTextBox1.Text = StrConv(InputB$(LOF(1), 1), vbUnicode)
Close #1
End Sub

方法四:
用Shell语句直接调出Windows的记事本,给个文件名即可轻而易举地打开文本文件。此法适合于打开程序的Readme文件(注意:在可执行文件和要打开的文本文件之间要有空格):
Shell "NotePad.EXE f:/d.txt",vbNormalFucus

方法五:
用RichTextBox控件自身的LoadFile属性打开文件:
RichTextBox1.LoadFile "f:/d.txt", rtfText

--------------------------------------
  Re:VB读写文件 ( 发表时间:2006-6-2 11:29:41 )
5楼

dim nFile as Integer, strTmp as String
    dim arTmp() as String
    nFile = FreeFile
    Open 文本文件全路径名 For Input As #nFile
    Do While Not EOF(nFile)
       Line Input #nFile, strTmp
       arTmp=Split(strTmp,分隔符)  '不知道你分隔符是空格还是TAB?
       分析该数组(arTmp(0)对应第一个字段,依次类推)
    Loop
    Close #nFile

===============================================

'假设要得到多个空格分隔的内容
Dim str1 As String
Dim astr1() As String,astr2() As String
Dim i as Long
Open "c:/tmp.txt" For Input As 1
str1 = Strconv(InputB$(LOF(1), 1), vbUnicode)
astr1 = split(str1 , vbCrLf)'以回车换行符分割
For i=0 To Ubound(astr1)
   strLine=astr1(i)
   'strLine为一行的字符串
   '多个空格替换为一个
   while not instr(strLine,"  ")=0
      strLine=replace(strLine,"  "," ")
      astr2=split(str1 , " ")
      '遍历astr2得到
   wend
Next
========================================================

dim str as string
dim arr() as string
open "c:/txtfile.txt"  for input as #1
      line input #1,str
      arr=split(str," ")
    
      ....'处理过程

close #1

原创粉丝点击