有没有办法获得一个文件所在的扇区。解决就结帖 我想在读一个文件的时候,同时获得这个文件前512个字节所在的扇区是第几个扇区。不知道这个功能怎么实现。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 以下资料可能对你有用:第二FAT为第一FAT的备份, FAT区紧接在OBR之后,其大小由本分区的大小及文件分配单元的大小决定。关于FAT的格式历来有很多选择 目录区紧接在第二FAT表之后,只有FAT还不能定位文件在磁盘中的位置,FAT还必须和DIR配合才能准确定位文件的位置。 DIR记录着每个文件(目录)的起始单元(这是最重要的)、文件的属性等。定位文件位置时,操作系统根据DIR中的起 始单元,结合FAT表就可以知道文件在磁盘的具体位置及大小了。在DIR区之后,才是真正意义上的数据存储区,即DATA区。 操作系统从目录区中读取文件信息(包括文件名、后缀名、文件大小、修改日期和文件在数据区保存的第一个簇的簇号), Win9x的文件删除工作是很简单的,只在目录区做了一点小改动——将目录区的文件的第一个字符改成了E5就表示将改文件删除了。 目录区中的目录项变化较多,一个目录项仍占32字节,可以是文件目录项、子目录项、卷标项(仅跟目录有)、已删除目录项、长文件名 目录项等。目录项中原来在DOS下保留未用的10个字节都有了新的定义,全部32字节的定义如下: (1) 0-- 7字节 文件正名。 (2) 8--10字节 文件扩展名。 (3) 11字节 文件属性,按二进制位定义,最高两位保留未用,0至5位分别是只读位、隐藏位、系统位、卷标位、子目录位、归档位。 (4) 11--13字节 仅长文件名目录项用,用来存储其对应的短文件名目录项的文件名字节校验和等。 (5) 13--15字节 24位二进制的文件建立时间,其中的高5位为小时,次6位为分钟。 (6) 16--17字节 16位二进制的文件建立日期,其中的高7位为相对于1980年的年份值,次4位为月份,后5位为月内日期。 (7) 18--19字节 16位二进制的文件最新访问日期,定义同(6)。 (8) 20--21字节 起始簇号的高16位。 (9) 22--23字节 16位二进制的文件最新修改时间,其中的高5位为小时,次6位为分钟,后5位的二倍为秒数。 (10)24--25字节 16位二进制的文件最新修改日期,定义同(6)。 (11)26--27字节 起始簇号的低16位。 (12)28--31字节 32位的文件字节长度。 其中第(4)至(8)项为以后陆续定义的。 对于子目录项,其(12)为零;已删除目录项的首字节值为E5H。在可以使用长文件名的FAT32系统中, 文件目录项保存该文件的短文件名,长文件名用若干个长文件名目录项保存,长文件名目录项倒序排在文件短目录项前面,全部是采用双字 节内码保存的,每一项最多保存十三个字符内码,首字节指明是长文件名的第几项,11字节一般为0FH,12字节指明类型,13字节为校验和, 26--27字节为零。 1、Win9x中,“我的电脑”支持最长125个汉字或250个西文的长文件名。长文件名FDT中,有两种记录:一种是扩展的8.3记录,另一种是长文件名记录。若FDT记录中首簇号低字为0且文件属性为0Fh,则为长文件名记录,否则为扩展8.3记录。文件的原始文件名(长名)以双字节字符方式存放在长文件记录中,其8.3名字和首簇号等信息则全部存放在扩展8.3记录中。 2、每条长文件记录可以存放13个字符。大小写是区分的,汉字符是它的汉字内码,西文符是扩展到16位的ASCII码。这13个字符码整数在记录中的字节位移依次是:01h、03h、05h、07h、09h、0Eh、10h、12h、14h、16h、18h、1Ch、1Eh。 3、设某文件的长名包含K*13+M个字符(M>0),则该文件在FDT中占用连续的K+2条记录:末记录是该文件的扩展8.3信息;次末记录存放长名的第一段字符(13个),该记录的首字节为01;次次末记录存放长名的第二段字符,该记录的首字节为02;...;次记录存放长名的第K段字符,该记录的首字节为K;首记录存放长名的最后M个字符,0000标识着名字串的结束,该记录的首字节为41h+K。 4、若文件名符合8.3规格且不包含小写字母,则只有扩展8.3记录。 5、长名记录中0D位移字节是长文件名的校验码。 多谢,好像很有用,不能大侠有没有关于fat的文件格式,我想知道我的一个分区,那么第一fat和第二fat从什么地方开始,而且最主要的就是所说的DIR在什么地方。大概什么格式。有没有这方面的资料,给个连接也可以,比较懒,自己找还得找一会。 这个只要研究一下文件系统的结构就可以了,FAT最简单,是一个松散的链式结构,FAT表读出来之后分析一下就可以了,一般是在卷的开头位置,在windows 2000/xp下可以用绝对磁盘读写,win98下麻烦一点。它的spec在微软网站上有的,仔细看看就好了。在这里:http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspxNTFS麻烦一点,没有官方的spec,但是也研究的差不多了,几个网站:www.ntfs.comhttp://www.linux-ntfs.org/Linux下有几个软件是用来读写NTFS的,fuse,ntfs-3g。研究一下代码就差不多了。 http://www.linux-ntfs.org/是不错。推荐阅读一下戴士剑的那本《数据恢复》第二版。FDT/FAT, MFT/BITMAP Combobox的Activex实现 求"上海民朋信息技术有限公司"的详细资料 数据库文件如何在用户电脑上使用 高手看看这段代码反复调用为什么程序会死在那里,点右键后正常 WTL中,怎么改变lineto 画线的颜色和 粗细? 请教高手,在CListCtrl上创建自画位图... 关于VC预编译的几个小问题 如何在接口IDL定义中使用ADO记录集?急 关于CreateFont参数nHeight的疑问 菜鸟问题多多? 在ATL对话框里,树控件如何接收WM_NOTIFY消息? 属性页中添加ActiveX控件后,点击该属性页,该属性页无法显示
第二FAT为第一FAT的备份, FAT区紧接在OBR之后,其大小由本分区的大小及文件分配单元的大小决定。关于FAT的格式历来有很多选择
目录区紧接在第二FAT表之后,只有FAT还不能定位文件在磁盘中的位置,FAT还必须和DIR配合才能准确定位文件的位置。
DIR记录着每个文件(目录)的起始单元(这是最重要的)、文件的属性等。定位文件位置时,操作系统根据DIR中的起
始单元,结合FAT表就可以知道文件在磁盘的具体位置及大小了。在DIR区之后,才是真正意义上的数据存储区,即DATA区。
操作系统从目录区中读取文件信息(包括文件名、后缀名、文件大小、修改日期和文件在数据区保存的第一个簇的簇号),
Win9x的文件删除工作是很简单的,只在目录区做了一点小改动——将目录区的文件的第一个字符改成了E5就表示将改文件删除了。
目录区中的目录项变化较多,一个目录项仍占32字节,可以是文件目录项、子目录项、卷标项(仅跟目录有)、已删除目录项、长文件名
目录项等。目录项中原来在DOS下保留未用的10个字节都有了新的定义,全部32字节的定义如下:
(1) 0-- 7字节 文件正名。
(2) 8--10字节 文件扩展名。
(3) 11字节 文件属性,按二进制位定义,最高两位保留未用,0至5位分别是只读位、隐藏位、系统位、卷标位、子目录位、归档位。
(4) 11--13字节 仅长文件名目录项用,用来存储其对应的短文件名目录项的文件名字节校验和等。
(5) 13--15字节 24位二进制的文件建立时间,其中的高5位为小时,次6位为分钟。
(6) 16--17字节 16位二进制的文件建立日期,其中的高7位为相对于1980年的年份值,次4位为月份,后5位为月内日期。
(7) 18--19字节 16位二进制的文件最新访问日期,定义同(6)。
(8) 20--21字节 起始簇号的高16位。
(9) 22--23字节 16位二进制的文件最新修改时间,其中的高5位为小时,次6位为分钟,后5位的二倍为秒数。
(10)24--25字节 16位二进制的文件最新修改日期,定义同(6)。
(11)26--27字节 起始簇号的低16位。
(12)28--31字节 32位的文件字节长度。
其中第(4)至(8)项为以后陆续定义的。 对于子目录项,其(12)为零;已删除目录项的首字节值为E5H。在可以使用长文件名的FAT32系统中,
文件目录项保存该文件的短文件名,长文件名用若干个长文件名目录项保存,长文件名目录项倒序排在文件短目录项前面,全部是采用双字
节内码保存的,每一项最多保存十三个字符内码,首字节指明是长文件名的第几项,11字节一般为0FH,12字节指明类型,13字节为校验和,
26--27字节为零。
2、每条长文件记录可以存放13个字符。大小写是区分的,汉字符是它的汉字内码,西文符是扩展到16位的ASCII码。这13个字符码整数在记录中的字节位移依次是:01h、03h、05h、07h、09h、0Eh、10h、12h、14h、16h、18h、1Ch、1Eh。
3、设某文件的长名包含K*13+M个字符(M>0),则该文件在FDT中占用连续的K+2条记录:末记录是该文件的扩展8.3信息;次末记录存放长名的第一段字符(13个),该记录的首字节为01;次次末记录存放长名的第二段字符,该记录的首字节为02;...;次记录存放长名的第K段字符,该记录的首字节为K;首记录存放长名的最后M个字符,0000标识着名字串的结束,该记录的首字节为41h+K。
4、若文件名符合8.3规格且不包含小写字母,则只有扩展8.3记录。
5、长名记录中0D位移字节是长文件名的校验码。
我想知道我的一个分区,那么第一fat和第二fat从什么地方开始,而且最主要的就是所说的DIR在什么地方。大概什么格式。
有没有这方面的资料,给个连接也可以,比较懒,自己找还得找一会。
http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspxNTFS麻烦一点,没有官方的spec,但是也研究的差不多了,几个网站:
www.ntfs.com
http://www.linux-ntfs.org/
Linux下有几个软件是用来读写NTFS的,fuse,ntfs-3g。研究一下代码就差不多了。
推荐阅读一下戴士剑的那本《数据恢复》第二版。FDT/FAT, MFT/BITMAP