vb 二进制打开文件
答案:2 悬赏:0 手机版
解决时间 2021-02-27 15:17
- 提问者网友:玫瑰园
- 2021-02-26 22:49
用二进制方式打开一个文件“G:\学习资料\第六学期\123.JPG”,从180位置开始读取,连续读取四个字节,其数值组成一个2X2的矩阵。写出代码!!!
最佳答案
- 五星知识达人网友:青灯有味
- 2021-02-27 00:29
Dim file() As Byte, MyFiles As String
MyFiles = "G:\学习资料\第六学期\123.JPG"
Open MyFiles For Binary As #1 '使用二进制方法打开文件
ReDim file(LOF(1) - 1) As Byte '因为数组从0开始,所以这里数组上标要减去1
Get #1, , file '把文件内容存入数组
Close
Dim a(1, 1)
Dim i As Integer, j As Integer
For i = 0 To 1
For j = 0 To 1
a(i, j) = file(179 + i * (2 - 1) + j)
Next
Next
MyFiles = "G:\学习资料\第六学期\123.JPG"
Open MyFiles For Binary As #1 '使用二进制方法打开文件
ReDim file(LOF(1) - 1) As Byte '因为数组从0开始,所以这里数组上标要减去1
Get #1, , file '把文件内容存入数组
Close
Dim a(1, 1)
Dim i As Integer, j As Integer
For i = 0 To 1
For j = 0 To 1
a(i, j) = file(179 + i * (2 - 1) + j)
Next
Next
全部回答
- 1楼网友:老鼠爱大米
- 2021-02-27 01:03
dim file() as byte, myfiles as string
open myfiles for binary as #3
'使用二进制方法打开文件
redim file(lof(3) - 1) as byte '因为数组从0开始,所以这里数组上标要减去1
get #3, , file
'把文件内容存入数组
close
'此时直接关闭二进制读取的文件
之后你就可以对数组file进行操作了。
二进制文件
二进制文件保存的数据是无格式的字节序列,文件中没有记录或字段这样的结构。二进制访问能提供对文件的完全控制,因为文件中的字节可以代表任何东西。例如,通过创建长度可变的记录可保存磁盘空间。当要保持文件的尺寸尽量小时,应使用二进制型访问。读写操作需要知道当前文件指针的位置,所以在程序中应实时跟踪文件指针的位置。需要注意的是,当把二进制数据写入文件中时,使用变量是 byte 数据类型的数组的,而不是 string 变量。 string 被认为包含的是字符,而二进制型数据可能无法正确地存在 string 变量中。
有关二进制操作语句。
1、打开二进制文件语句:
open语句语法格式为:open <文件名> for binary as #<文件号>参数意义同顺序文件。对二进制文件,打开方式用binary。
2、 文件的位置每个打开的二进制文件都有自己的文件指针,文件指针是一个数字值,指向下一次读写操作在文件中的位置。二进制文件中的每一个“位置”对应一个数据字节,因此,有n个字节的文件就有从1到n的位置。经过对二进制文件进行读写操作,会自动改变文件指针的位置。也可自由地改变文件指针或是获得指针的值,此时用seek语句或seek( )、loc ( )函数。其语法格式和功能如下表:
语法格式 功能描述
seek #<文件号>, <新位置值> 将文件指针设置为设置值所指定的“新位置”
变量名=seek(<文件号>) 返回当前的文件指针位置(下一个要读写的字节)
变量名=loc (<文件号>) 返回上一次读写的位置
说明:一般的,loc( )返回值总比seek( )的返回值小1,除非用seek语句移动了指针。 在随机文件中也可使用seek语句或seek( )、loc( )函数,但文件指针指向记录,而二进制文件中文件指针指向字节。
3、 二进制文件的读 | 写操作二进制文件的读写操作与随机文件的读写操作类似。从随机文件中读 | 写记录用get | put语句,同样从二进制文件中读|写数据用get | put语句。语法格式为:
get | put #<文件号>,[读取位置 | 写入位置], <变量名>说明:读取位置指定读取数据的起始位置,读出的数据存入变量名指定的变量中。写入位置指定写入数据的起始位置,写入的数据即为变量名指定的变量的值,它可以是字符型,也可以是数值型。打开一个二进制文件时,文件指针指向1,使用get或put操作语句将改变文件指针的位置。
4、 二进制文件和随机文件的区别 二进制访问中的 open 与随机存取的 open 不同, 它没有指 定 len = reclength。如果在二进制型访问的 open 语句中包括了记录长度, 则被忽略。 往二进制文件写入数据时,在长度可变的字段中保存信息,而随机文件采用在固定大小字段中保存信息,所以保存同样信息时,为了减少文件大小,应采用二进制访问方式。例如,考虑有一个雇员记录文件。这个文件用长度固定的记录和字段来储雇员的信息。type person
id
as integer
monthlysalary
as currency
lastreviewdate
as long
firstname
as string * 15
lastname
as string * 15
title
as string * 15
reviewcomments
as string * 150end type不管字段的实际内容如何,该文件每条记录都占用 209 个字节。如果通过使用二进制型访问,可使磁盘空间的使用降到最小。因为这不需要固定长度的字段,类型声明语句可以省略字符串长度参数。type person
id
as integer
monthlysalary
as currency
lastreviewdate
as long
firstname
as string
lastname
as string
title
as string
reviewcomments
as stringend typepublic empl as person
'定义记录。例 编写一个复制文件的程序。dim char as byte
' 读取 | 写入二进制文件的数据只能是byte类型dim filenum1, filenum2 as integerfilenum1 = freefileopen "d:\\jmdj.dat" for binary as #filenum1 ' 打开源文件filenum2 = freefileopen "d:\\jmdj.bak" for binary as #filenum2 ' 打开目标文件do while not eof(filenum1)get #1, , char
' 从源文件读出一个字节put #2, , char
' 将一个字节写入目标文件loopclose
' 关闭打开的两个文件
5、 关闭二进制文件语句:colse语句语法格式为:colse [#文件号]参数意义同顺序文件。若省略“文件号”时,则关闭所有已由应用程序打开的文件。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯