大家有谁用过fso对象的?我用着怎么那么难。文件的保存怎么做呢?还有openastextstream,用读的方式打开不能写,用写的方式不能读,用append好象也不行。大家有谁有代码给小弟一点,我看了两天msdn,还是有点找不到他的头绪。

解决方案 »

  1.   

    觉得FSO麻烦就用VB自己的Open啊,
      

  2.   

    Option Explicit
    Private Sub Form_Click()
    '声明变量为对象变量
        Dim objA As Object, objB As Object
    'CreateObject是函数,可以创建ActiveX对象并返回对该对象的引用
    '用Set将对象引用赋给对象变量
        Set objA = CreateObject("Scripting.FileSystemObject")
    'CreateTextFile方法指定文件名返回一个用于该文件读写的文本流对象
        Set objB = objA.CreateTextFile("c:\FSO.txt", True)
    'WriteLine方法写入指定的字符串和换行符到文本流文件中
        objB.WriteLine ("文件系统对象的应用")
    'Close关闭打开的文本流文件
        objB.Close
    '文件系统对象的CopyFile方法可以复制文件
        objA.CopyFile "c:\FSO.txt", "d:\FSO.txt"
    '文件系统对象的DeleteFile方法可以删除文件
        objA.DeleteFile "c:\FSO.txt"
    End Sub
      

  3.   

    '例:文件系统对象_文本流
    Option Explicit
    Private Sub Form_Click()
        Dim objA As New FileSystemObject
        Dim objB As Object
        Dim objC As File
        Dim strS As String
    '利用文件系统对象的FileExists方法判断文本流对象是否存在
    '如果存在则利用文件系统对象的DeleteFile方法删除
        If objA.FileExists("D:\TestStream.TXT") = True Then _
                objA.DeleteFile ("D:\TestStream.TXT")
    '利用文件系统对象的OpenTextFile方法建立文本流对象
        Set objB = objA.OpenTextFile("D:\TestStream.TXT", ForAppending, True, 0)
    '文本流对象的写入
        objB.Write ("星期一安排学术报告")
        objB.WriteBlankLines (3)
        objB.WriteLine ("星期二安排研究生答辩")
        objB.WriteBlankLines (2)
        objB.WriteLine ("星期三安排现场调研")
    '文本流对象的关闭
        objB.Close
    '利用文件系统对象的GetFile方法取得文件对象
        Set objC = objA.GetFile("D:\TestStream.TXT")
    '文件对象的复制
        objC.Copy ("F:\TestStream.TXT")
    '利用文件系统对象的GetFile方法取得复制后的文件对象
        Set objC = objA.GetFile("F:\TestStream.TXT")
    '利用文件系统对象的OpenTextFile方法打开文本流对象
        Set objB = objA.OpenTextFile("D:\TestStream.TXT", ForReading, , 0)
    '利用文本流对象的AtEndOfStream属性判断是否到文件结尾
    '利用文本流对象的ReadAll方法读全部文件,并利用信息框显示
        Do While objB.AtEndOfStream <> True
            strS = objB.ReadAll
            MsgBox strS
        Loop
    '关闭文本流对象
        objB.Close
    '设定屏幕打印字体和打印位置
        Form1.FontName = "隶书"
        Form1.FontSize = 36
        CurrentX = 2000
        CurrentY = 1500
        Form1.Print "大功告成!"
    End Sub
      

  4.   

    '例:文本流搜索
    模块中内容:
    '文件系统对象_文本流搜索
    Option Explicit
    Public vntResult() As Variant
    Function STFiles(strPath As String, strSearch As String) As Variant()
        Dim objFSO As New FileSystemObject
        Dim objFil As File
        Dim objTS As TextStream
        Dim lngPos As Long, lngCount As Long
        ReDim vntResult(50)
    '在路径strPath所有文件中查找扩展名为TXT的每一个文件
        For Each objFil In objFSO.GetFolder(strPath).Files
            If UCase(objFSO.GetExtensionName(objFil.Path)) = "TXT" Then
    '如果扩展名为TXT则打开该文件
                Set objTS = objFil.OpenAsTextStream(ForReading)
    '在objTS.ReadAll中从第1个字符起查找字符strSearch最先出现的位置
                lngPos = InStr(1, objTS.ReadAll, strSearch, vbTextCompare)
    '关闭此文件
                objTS.Close
    '如果找到所要搜索的字符串
                If lngPos > 0 Then
    '重新打开该文件
                    Set objTS = objFil.OpenAsTextStream(ForReading)
    '将指针移到所要搜索的字符最先出现的位置
                    objTS.Skip lngPos - 1
    '文件计数器加1
                    lngCount = lngCount + 1
    '如果文件计数器超过vntResult的上界
                    If lngCount > UBound(vntResult) Then
                        ReDim Preserve vntResult(UBound(vntResult) + 50)
                    End If
    '利用Array函数为vntResult变体数组赋值
                    vntResult(lngCount) = Array(objFil.Path, objTS.Line, objTS.Column)
    '关闭该文件
                    objTS.Close
                End If
            End If
        Next
        ReDim Preserve vntResult(lngCount)
        STFiles = vntResult
    End Function
    窗体内容:
    '文件系统对象_文本流搜索
    Option ExplicitPrivate Sub Form_Click()
        Dim vntP() As Variant
        Dim intI As Integer
    '在F盘的所有TXT文件中搜索第一个“星期”所出现的位置
        vntP() = STFiles("F:", "星期")
    '将出现位置放入列表框
        For intI = 1 To UBound(vntP)
            List1.AddItem "路径为" & vntP(intI)(0) & _
                "  在第" & vntP(intI)(1) & "行和第" & _
                vntP(intI)(2) & "列"
        Next
    End Sub