假设一个文本文件只有12个byte,里面的内容是“testtest中国” c:\test.txtOpen filename For Binary Read As #FileNumber
ss = InputB(13, FileNumber)
如果按这种方法读取,需要读取的字节数量大于文件的大小,也能读出13个字节,会在后面加上一些其他的字符,但是文件里面没有这些东西呀,这是为什么我希望能够如果文件只有12个字节,那就只读出12个字节

解决方案 »

  1.   

    如果你是 For Binary 打开,那么就要用 Get、 Put 语句,把文件的字节读入到字节数组中。如果你要按照文本方式处理文件,那就用 For Input 方式打开,把文件数据读入到字符串里面,这时候,VB会自动把文件中的ANSI字符转为Unicode字符串到变量中。
      

  2.   

    主要是用input方式读取的是字符,一个中文也只能算一个字符如果用Get,好像也是跟上面一样,不能按实际的字节数读取
      

  3.   

    超过文件大小时,实际上你开了一个大于文件内存的缓冲区,并且将文件内容起始地址处开始的数据 Copy 到你的缓冲区中。因为内存中总是有数据的,即使是随机的数据。所以多余的部分必然是奇里古怪的东西。Open filename For Binary Read As #FileNumber
    If n > Lof(FileNumber) then n = Lof(FileNumber)
    ss = InputB(n, FileNumber)
      

  4.   

    Option ExplicitPrivate Sub Command1_Click()
    Dim ss() As Byte
    Dim FileName As String
    Dim n As Integer
    FileName = "d:\myTxt.dat"
    Open FileName For Binary As #1
    n = FileLen(FileName)
    ss = InputB(n, #1)
    Close #1
    '加后边的只是测试下结果SS是否正确
    Open "d:\s.dat" For Binary As #2
     Put #2, , ss
    Close #2
    End Sub