阅读:1907回复:8
fat16文件系统的问题
如果要在文件内部删除或是添加数据,那么后面的文件数据都要相应移动么?FAT区里是按簇来存储的数组来表示个链。root区里只记录了文件的开始簇号和大小。只能吧后面的数据全部做调整么?没有好点的办法?
|
|
禁止发言
|
沙发#
发布于:2003-12-13 12:14
用户被禁言,该主题自动屏蔽! |
板凳#
发布于:2003-12-21 19:11
操作文件分配表就可以了,文件分配表里记录了每个文件实际内容的存放地点,是一个单向链表,文件的开始蔟记录在目录项里,根据首蔟到分配表里去检索整个链,遇到FFFF标志代表到了尾部.注意:文件分配表有两份,要同步操作.
|
|
|
地板#
发布于:2003-12-22 19:13
做什么东东啊,要这样搞,会累死人的哎。
|
|
|
地下室#
发布于:2003-12-23 09:15
zhangyl:你说的是整蔟的操作可以这样,
但是如果文件添加或是删除某些数据,导致蔟不满,那怎么做啊? fat里面好像只规定了可以最后一个蔟不满的。 如果你知道有方法可以标示中间簇不满,快告诉我。 nustzhua:我知道这么做很麻烦,但是我想不到其他的好方法啊,所以才上来问的啊 |
|
5楼#
发布于:2003-12-23 10:32
其实你只要先找到原文件的簇,建立簇链.如果只是修改其中的某些内容,那只要找到需要修改内容的数据区,把新内容写入,能后修改FAT.如果是从末尾添加内容,那找到文件簇链后,找到空簇链添加内容,再修改FAT.
|
|
6楼#
发布于:2003-12-23 13:08
lxhpt:
你说的我都明白。我的意思是我修改的中间的某个簇的内容,比如删一个bit,那么我后面的簇(扇区)的数据都要前移5一个bit么?这样不是很麻烦么? 只有这种办法? 我开始问的就是这个,fat的东西我了解的,所以才这么问的 |
|
7楼#
发布于:2003-12-24 09:35
我做的系统没有做这样的功能.删除1 bit 或其它的数据确实比较难处理,好象是要这么做.不过这倒是可以讨论.sorry!
|
|
8楼#
发布于:2004-01-05 17:59
lxhpt: 就我理解,在文件系统中,修改文件的某个字节时,整个文件已经Cache进了内存。修改完毕,所有的内容从新写入到硬盘。不存在您所考虑的问题。 :) |
|