读取:
Dim TempFile As Long
Dim LoadBytes() As ByteTempFile=FreeFile
Open 文件名 For Binary As #TempFile
Redim LoadBytes(1 To Lof(TempFile)) As Byte
Get #TempFile,,LoadBytes
Close TempFileText1.Text=StrConv(LoadBytes,vbUniCode)写入:
Dim TempFile As Long
Dim SaveBytes() As ByteSaveBytes=StrConv(Text1.Text,vbFromUniCode)TempFile=FreeFile
Open 文件名 For Binary As #TempFile
Put #TempFile,,SaveBytes
Close TempFile

解决方案 »

  1.   

    Open 语句
          能够对文件输入/输出 (I/O)。语法Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]Open 语句的语法具有以下几个部分:部分 描述 
    pathname 必要。字符串表达式,指定文件名,该文件名可能还包括目录、文件夹及驱动器。 
    mode 必要。关键字,指定文件方式,有 Append、Binary、Input、Output、或 Random 方式。如果未指定方式,则以 Random 访问方式打开文件。 
    access 可选。关键字,说明打开的文件可以进行的操作,有 Read、Write、或 Read Write 操作。 
    lock 可选。关键字,说明限定于其它进程打开的文件的操作,有 Shared、Lock Read、Lock Write、和 Lock Read Write 操作。 
    filenumber 必要。一个有效的文件号,范围在 1 到 511 之间。使用 FreeFile 函数可得到下一个可用的文件号。 
    reclength 可选。小于或等于 32,767(字节)的一个数。对于用随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。 
    说明对文件做任何 I/O 操作之前都必须先打开文件。Open 语句分配一个缓冲区供文件进行 I/O 之用,并决定缓冲区所使用的访问方式。如果 pathname 指定的文件不存在,那么,在用 Append、Binary、Output、或 Random 方式打开文件时,可以建立这一文件。如果文件已由其它进程打开,而且不允许指定的访问类型,则 Open 操作失败,而且会有错误发生。如果 mode 是 Binary 方式,则 Len 子句会被忽略掉。重要 在 Binary、Input 和 Random 方式下可以用不同的文件号打开同一文件,而不必先将该文件关闭。在 Append 和 Output 方式下,如果要用不同的文件号打开同一文件,则必须在打开文件之前先关闭该文件。Open 语句示例
    本示例示范 Open 语句的不同用法来做到文件的输出与输入。下列代码以顺序输入模式打开 TESTFILE 文件。Open "TESTFILE" For Input As #1
    ' 若要以其他方式打开文件,必需先关闭此文件。
    Close #1下列代码以只允许写操作的二进制方式打开文件。Open "TESTFILE" For Binary Access Write As #1
    ' 若要以其他方式打开文件,必需先关闭此文件。
    Close #1下列代码以随机方式打开文件,文件中含有用户自定义数据类型 Record 的记录。Type Record   ' 定义用户自定义数据类型。
       ID As Integer
       Name As String * 20
    End TypeDim MyRecord As Record   ' 声明变量。
    Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
    ' 若要以其他方式打开文件,必需先关闭此文件。
    Close #1下列代码以顺序输出方式打开文件;任何过程都可以读写该文件。Open "TESTFILE" For Output Shared As #1
    ' 若要以其他方式打开文件,必需先关闭此文件。
    Close #1下列代码以只允许读的二进制方式打开文件;其他过程不可以读该文件。Open "TESTFILE" For Binary Access Read Lock Read As #1
    Close 语句
          关闭 Open 语句所打开的输入/输出 (I/O) 文件。语法Close [filenumberlist]可选的 filenumberlist 参数为一个或多个文件号,其中 filenumber 为任何有效的文件号,语法如下:[[#]filenumber] [, [#]filenumber] . . .说明若省略 filenumberlist,则将关闭 Open 语句打开的所有活动文件。当关闭 Output 或 Append 打开的文件时,将属于此文件的最终输出缓冲区写入操作系统缓冲区。所有与该文件相关联的缓冲区空间都被释放。在执行 Close 语句时,文件与其文件号之间的关联将终结。Close 语句示例
    本示例使用 Close 语句来关闭所有为 Output 而打开的三个文件。Dim I, FileName
    For I = 1 To 3   ' 循环三次。
       FileName = "TEST" & I   ' 创建文件名。
       Open FileName For Output As #I   ' 打开文件。
       Print #I, "This is a test."   ' 将字符串写入文件。
    Next I
    Close   ' 将三个已打开的文件全部关闭。
      

  2.   

    FreeFile 函数
          返回一个 Integer,代表下一个可供 Open 语句使用的文件号。语法FreeFile[(rangenumber)]可选的参数 rangenumber 是一个 Variant,它指定一个范围,以便返回该范围之内的下一个可用文件号。指定 0(缺省值)则返回一个介于 1 – 255 之间的文件号。指定 1 则返回一个介于 256 – 511 之间的文件号。说明使用 FreeFile 提供一个尚未使用的文件号
    FreeFile 函数示例
    本示例使用 FreeFile 函数来返回下一个可用的文件号。在循环中,共打开五个输出文件,并在每个文件中写入一些数据。Dim MyIndex, FileNumber
    For MyIndex = 1 To 5   ' 循环五次。
       FileNumber = FreeFile   ' 取得未使用的文件号。
       Open "TEST" & MyIndex For Output As #FileNumber   ' 创建文件名。
       Write #FileNumber, "This is a sample."   ' 输出文本至文件中。
       Close #FileNumber   ' 关闭文件。
    Next MyIndexGet 语句
          将一个已打开的磁盘文件读入一个变量之中。语法Get [#]filenumber, [recnumber], varname Get 语句的语法具有以下几个部分:部分 描述 
    filenumber 必要。任何有效的文件号。 
    recnumber 可选。Variant (Long)。记录号(Random 方式的文件)或字节数(Binary 方式的文件),以表示在此处开始读出数据。 
    varname 必要。一个有效的变量名,将读出的数据放入其中。 
    说明通常用 Put 将 Get 读出的数据写入一个文件。文件中第一个记录或字节位于位置 1,第二个记录或字节位于位置 2,依此类推。若省略 recnumber,则会读出紧随上一个 Get 或 Put 语句之后的下一个记录或字节(或读出最后一个 Seek 函数指出的记录或字节)。所有用于分界的逗号都必须罗列出来,例如:Get #4,,FileBuffer下列规则适用于以 Random 方式打开的文件: 如果要读出的数据的长度小于 Open 语句的 Len 子句中所指定的长度,Get 会在某个边界之内读出随后的记录,在这里,边界的长度等于记录的长度。将此文件缓冲区内的现有内容填入到一个空间之内,该空间介于一个记录的结尾与下一个记录的开头之间。因为无法确定填入的数据量,所以,应设法使记录的长度与读出的数据长度一致,这通常是个好办法。
    如果读出的变量是一个可变长度字符串,则 Get 语句先读出一个含有字符串长度的双字节描述符,然后读出放入变量中的数据。所以,Open 语句中的 Len 子句所指定的记录长度必须至少比字符串的实际长度多两个字节。
    如果读出的变量是一个数值类型的 Variant,则 Get 先读出两个字节,识别 Variant 的 VarType,然后读出放入此变量中的数据。例如,在读出 VarType 3 的 Variant 时,Get 读出六个字节:前两个字节说明 Variant 为 VarType 3 (Long),后四个字节则包含 Long 类型数据。Open 语句中的 Len 子句所指定的记录长度必须至少比储存变量所需的实际长度多两个字节。 
    注意 可以使用 Get 语句从磁盘中读出一个 Variant 数组,但不能使用它读出包含数组的标量 Variant。也不能使用 Get 从磁盘中读出对象。如果读出的变量是 VarType 8 (String) 的 Variant,则 Get 先读出两个字节,识别 VarType,接下来的两个字节指出字符串的长度,然后读出字符串数据。Open 语句中的 Len 子句所指定的记录长度必须比实际字符串的长度至少多四个字节。
    如果读出的变量是一个动态数组,则 Get 会读出一个描述符,其长度等于 2 加上 8 乘以维数,即 2 + 8 * NumberOfDimensions。读出数组数据和数组描述符就需要占据字节,而 Open 语句中的 Len 子句所指定的记录长度必须大于或等於这些字节数的总和。 例如,在将数组写入磁盘时,下列数组声明需要 118 个字节: 
    Dim MyArray(1 To 5,1 To 10) As Integer这 118 个字节的分配情况如下:18 个字节用于描述符 (2 + 8 * 2),100 个字节用于数据 (5 * 10 * 2)。如果读出的变量是一个大小固定的数组,则 Get 只读出数据。它不读出描述符。
    如果读出的变量是任何其他类型的变量(不是可变长度的字符串或 Variant£©,则 Get 只读出变量数据。Open 语句中的 Len 子句所指定的记录长度必须大于或等於要读出的数据的长度。
    Get 在读出用户定义类型的元素时,好象是单独地读出每一个元素,只是不在元素之间进行填充。在磁盘上,(用 Put 写入的)用户定义的类型的动态数组之前有一个描述符,其长度等于 2 加上 8 乘以维数,即 2 + 8 * NumberOfDimensions。Open 语句中的 Len 子句所指定的记录长度必须大于或等於读出个别元素(包括任何数组及其描述符在内)所需的全部字节数总和。 
    对于以 Binary 方式打开的文件,Random 的所有规则都适用,但以下情况除外: 当 Open 语句中的 Len 子句不起作用时,Get 连续从磁盘中读出所有变量;也就是说,两个记录之间没有任何填充。
    对于任何不属于用户定义的类型的数组,Get 只读出数据。它不会读出描述符。
    Get 读出可变长度字符串,不管这些字符串是否具有长度为 2 字节的描述符,它们都不是用户定义的类型的元素。所读出的字节数等於字符串已包含的字符数。例如,下列语句从文件号为 1 的文件中读出十个字节: 
    VarString = String(10, )
    Get #1,,VarStringGet 语句示例
    本示例使用 Get 语句来将数据从文件读到变量中。示例中假设 TESTFILE 文件中含有五个用户自定义类型的记录。Type Record   ' 定义用户自定义的数据类型。
       ID As Integer
       Name As String * 20
    End TypeDim MyRecord As Record, Position   ' 声明变量。
    ' 为随机访问打开样本文件。
    Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
    ' 使用 Get 语句来读样本文件。
    Position = 3   ' 定义记录号。
    Get #1, Position, MyRecord   ' 读第三个记录。
    Close #1   ' 关闭文件。Put 语句
          将一个变量的数据写入磁盘文件中。语法Put [#]filenumber, [recnumber], varnamePut 语句的语法具有以下几个部分:部分 描述 
    filenumber 必要。任何有效的文件号。 
    recnumber 可选。Variant (Long)。记录号(Random 方式的文件)或字节数(Binary 方式的文件),指明在此处开始写入。 
    varname 必要。包含要写入磁盘的数据的变量名。 
    说明通常用 Get 将 Put 写入的文件数据读出来。文件中的第一个记录或字节位于位置 1,第二个记录或字节位于位置 2,依此类推。如果省略 recnumber,则将上一个 Get 或 Put 语句之后的(或上一个 Seek 函数指出的)下一个记录或字节写入。所有用于分界的逗号都必须罗列出来,例如:Put #4,,FileBuffer下列规则适用于以 Random 方式打开的文件: 如果已写入的数据的长度小于 Open 语句的 Len 子句指定的长度,则 Put 以记录长度为边界写入随后的记录。记录终点与下一个记录起点之间的空白将用现有文件缓冲区内的内容填充。因为填入的数据量无法确定,所以一般说来,最好设法使记录的长度与写入的数据长度一致。如果写入的数据长度大于由 Open 语句的 Len 子句所指定的长度,就会导致错误发生。
    如果写入的变量是一个可变长度的字符串,则 Put 先写入一个含有字符串长度的双字节描述符,然后再写入变量。Open 语句的 Len 子句所指定的记录长度至少要比实际字符串的长度多两个字节。
    如果写入的变量是数值类型的 Variant 则 Put 先写入两个字节来辨认 Variant 的 VarType,然后才写入变量。例如,当写入 VarType 3 的 Variant 时,Put 会写入六个字节:其中,前两个字节辨认出 Variant 为 VarType 3 (Long),后四个字节则包含 Long 类型的数据。Open 语句的 Len 子句所指定的记录长度必须至少比储存变量所需的实际字节多两个字节。 
    注意   Put 语句可用来将一个 Variant 数组写入磁盘,但不能用来将包含数组的标量 Variant 写入磁盘。Put 也不能用来将对象写入磁盘。 如果写入的变量是 VarType 8 (String) 的 Variant,则 Put 先写入两个字节来辨认 VarType,接下来的两个字节则指出字符串的长度,然后再写入字符串数据。Open 语句的 Len 子句所指定的记录长度必须至少比实际的字符串长度多四个字节。
    如果写入的变量是动态数组,则 Put 写入一个描述符,其长度等于 2 加上 8 乘以维数,即 2 + 8 * NumberOfDimensions。Open 语句的 Len 子句所指定的记录长度必须大于或等於为读出数组数据和数组描述符所需要的所有字节数总和。例如,在将数组写入磁盘时,下列数组声名需要 118 个字节的空间: 
    Dim MyArray(1 To 5,1 To 10) As Integer这 118 个字节的分配情况如下:18 个字节用于描述符 (2 + 8 * 2),100 个字节用于数据 (5 * 10 * 2)。
    如果写入的变量是大小固定的数组,则 Put 只写入数据。它不将描述符写入磁盘。
    如果写入的变量是任何其他类型的变量(不是可变长度的字符串或 Variant£©,则 Put 只写入变量数据。Open 语句的 Len 子句所指定的记录长度必须大于或等於要读出的数据长度。
    Put 写入用户定义类型的元素时,除了不在元素之间进行填充外,好象是单独地写入每一个元素。在磁盘上,有一个描述符位于 Put 写入的用户定义的类型的动态数组之前,其长度等于 2 加上 8 乘以维数,即 2 + 8 * NumberOfDimensions。Open 语句中的 Len 子句所指定的记录长度必须大于或等於为写入各个元素(包括任何数组及其描述符在内)所需的全部字节数总和。 
    对于以 Binary 方式打开的文件,上述所有 Random 规则都适用,除了: Open 语句中的 Len 子句不起作用。Put 语句连续地将所有变量写入磁盘;也就是说,两个记录之间没有任何填充。
    对于任何不属于用户定义的类型的数组,Put 只写入数据。它不会写入描述符。
    对于非用户定义的类型的可变长度字符串,Put 将其直接写入,