CN109697019B - 基于fat文件***的数据写入的方法和*** - Google Patents
基于fat文件***的数据写入的方法和*** Download PDFInfo
- Publication number
- CN109697019B CN109697019B CN201710984493.0A CN201710984493A CN109697019B CN 109697019 B CN109697019 B CN 109697019B CN 201710984493 A CN201710984493 A CN 201710984493A CN 109697019 B CN109697019 B CN 109697019B
- Authority
- CN
- China
- Prior art keywords
- data
- fat
- written
- fat table
- writing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了基于FAT文件***的数据写入的方法和***,涉及计算机技术领域。该方法的一具体实施方式包括:根据待写入数据所在文件占用的FAT表项对应的簇空间的剩余存储空间以及所述待写入数据的数据量,确定出需查找的FAT文件***的FAT表项的数量;查找出对应所述数量的FAT表项,并且将所述待写入数据写入所述剩余存储空间以及查找出的FAT表项所对应的簇空间。该实施方式能够提升写入数据的速度,解决小数据量写入和多次访问文件目录查找FAT表项导致文件数据写入速度低的问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于FAT文件***的数据写入的方法和***。
背景技术
近年来,随着嵌入式***的不断发展,嵌入式设备对灵活、高速、大数据量的数据存储需求越来越多。许多嵌入式***都增加了对外接SD卡(安全数码卡)、U盘等小容量存储设备的功能支持。FAT文件***凭借其功能完善、结构简单、易于软件实现的优点,成为了嵌入式***中被广泛使用的一种文件***。通过使用FAT文件***,嵌入式设备可以轻松的对FLASH、SD卡、U盘等小容量存储设备上的数据进行组织和管理。
在现有技术中,FAT文件***的数据操作以簇为基本单位,并且每次写入的数据量不超过一个簇空间所包含的字节数。每次写入操作只能对一个簇空间大小的数据进行写入,而且每次数据写入的操作,都需要查找FAT表,根据根目录或者文件目录,查找当前文件需要占用的空闲FAT表项,然后通过计算FAT表项对应簇的物理地址,得到目标存储空间位置,然后进行文件数据的读写。如果将数据存储到该一个FAT表项对应的一个簇空间后仍有剩余数据,则再次查找一个FAT表项进行数据存储。进而,一个完整的数据写入过程包含有多次的簇写入过程。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:当需要写入较大数据量文件内容的时候,由于单个簇空间能包含的数据量有限,要写入整个数据,需要多次读写目录文件和FAT表中的表项,导致写入操作需要花费更多的时间,进而增加了数据写入的空间复杂度和时间复杂度。
发明内容
有鉴于此,本发明实施例提供一种基于FAT文件***的数据写入的方法和***,能够提升写入数据的速度,解决小数据量写入和多次访问文件目录查找FAT表项导致文件数据写入速度低的问题。
为实现上述目的,根据本发明实施例的一个方面,提供了一种基于FAT文件***的数据写入的方法。
本发明实施例的基于FAT文件***的数据写入的方法包括:根据待写入数据所在文件占用的FAT表项对应的簇空间的剩余存储空间以及所述待写入数据的数据量,确定出需查找的FAT文件***的FAT表项的数量;查找出对应所述数量的FAT表项,并且将所述待写入数据写入所述剩余存储空间以及查找出的FAT表项所对应的簇空间。
可选地,所述确定出需查找的FAT文件***的FAT表项的数量的步骤包括:确定待写入数据所在文件占用的FAT表项,以及确定所述占用的FAT表项对应的簇空间的剩余存储空间;计算所述待写入数据的数据量,以及确定所述待写入数据的数据量与所述剩余存储空间的差值;根据所述差值确定出需查找的FAT文件***的FAT表项的数量。
可选地,所述查找出对应所述数量的FAT表项的过程包括:从当前标记为空闲的FAT表项逐条查询,查找出序号连续的空闲FAT表项。
可选地,在确定出需查找的FAT文件***的FAT表项的数量之前,还包括:根据所述待写入数据的数据量确定存储数据的簇空间充足。
为实现上述目的,根据本发明实施例的另一个方面,提供了一种基于FAT文件***的数据写入的***。
本发明实施例的基于FAT文件***的数据写入的***包括:确定模块,用于根据待写入数据所在文件占用的FAT表项对应的簇空间的剩余存储空间以及所述待写入数据的数据量,确定出需查找的FAT文件***的FAT表项的数量;查找和写入模块,用于查找出对应所述数量的FAT表项,并且将所述待写入数据写入所述剩余存储空间以及查找出的FAT表项所对应的簇空间。
可选地,所述确定模块还用于:确定待写入数据所在文件占用的FAT表项,以及确定所述占用的FAT表项对应的簇空间的剩余存储空间;计算所述待写入数据的数据量,以及确定所述待写入数据的数据量与所述剩余存储空间的差值;根据所述差值确定出需查找的FAT文件***的FAT表项的数量。
可选地,所述查找和写入模块还用于:从当前标记为空闲的FAT表项逐条查询,查找出序号连续的空闲FAT表项。
可选地,还包括空间充足确定模块,用于根据所述待写入数据的数据量确定存储数据的簇空间充足。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种基于FAT文件***的数据写入的装置。
本发明实施例的基于FAT文件***的数据写入的装置包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一所述的基于FAT文件***的数据写入的方法。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现上述任一所述的基于FAT文件***的数据写入的方法。
上述发明中的一个实施例具有如下优点或有益效果:因为在将全部数据写入之前,确定出需查找的FAT文件***的FAT表项的数量,进而在查找对应该数量的FAT表项时,可查找出由连续几个的FAT表项所对应出的簇空间块。对于小容量存储设备,连续扇区大数据量单次写入速度是远快于分散扇区小数据量写入速度的。所以,在查找出由连续的几个FAT表项所对应出的簇空间块后,可将数据写入该簇空间块,减少了多次访问文件目录查找FAT表项的时间,提升了基于FAT文件***的数据写入的速度,解决了现有技术中只能一次查找出一个FAT表项导致的数据写入效率低的问题。并且,本发明公开的基于FAT文件***的数据写入的方法没有破坏原FAT文件***体系结构,兼容单个数据多次写入和修改的情况,能够实现文件接续写入。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的基于FAT文件***的数据写入的方法的主要流程的示意图;
图2是根据本发明实施例的基于FAT文件***的数据写入的方法的优选流程的示意图;
图3是根据本发明实施例的基于FAT文件***的数据写入的***的主要模块的示意图;
图4是本发明实施例可以应用于其中的示例性***架构图;
图5是适于用来实现本发明实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
BPB_BytePerSec | 一个扇区所占的字节数 |
BPB_RootEntCnt | 根目录的目录项目数 |
BPB_FATSz32 | 一个FAT表所占的扇区数 |
BPB_SecPerClust | 一个簇所占的扇区数 |
BPB_NumFATs | 文件***中FAT表的份数 |
FAT文件***主要由BPB数据结构、FAT数据表、根目录、文件数据几个部分组成。BPB存储于FAT卷的第一个扇区,是启动扇区中的一部分。其中包含有FAT文件***的一些重要参数,如每个扇区包含的字节数、FAT数据结构的大小等重要信息。FAT数据表是表示簇号的一个列表,每个FAT表项代表一个簇,二者是一一对应的关系。根目录和文件数据在FAT32文件***中都被当作文件对待。通常,根目录的存储位置,在文件***被格式化操作的时候,都被设置在簇2的第一个扇区。
其中,簇:数据块的一种存储单位。
卷:存储设备上的一个分区。以SD卡为例,一个SD卡可以分多个卷,每个卷包含有若干个簇,每个簇包含有若干个扇区,每个扇区包含有若干字节。
FAT32:File Allocation Table,FAT文件***的一种32位版本。
BPB:BIOS Parameters Block。文件***卷引导空间中的一个数据结构。结构中的数据表示文件***中的部分重要参数信息。
在现有技术中,当需要写入较大数据量文件内容的时候,由于单个簇空间能包含的数据量有限,要写入整个数据,需要多次读写目录文件和FAT表中的表项,存在数据写入速度慢的问题。而且,小容量存储设备具有大数据量单次写入速度快于分散扇区小数据量写入的数据,所以单个簇空间写入数据会降低数据的写入速度。例如,SD卡一个扇区的大小设定为512字节。格式化SD卡时候,设定一个FAT32簇空间为8个扇区,即8*512字节。则每次写入数据的时候,从文件目录中获取文件数据对应的FAT表位置,然后查询FAT表,获取实际操作的物理地址,然后写入数据。但是每次写入数据个数不超过8*512字节。
图1是根据本发明实施例的基于FAT文件***的数据写入的方法的主要流程的示意图,如图1所示,本发明实施例的基于FAT文件***的数据写入的方法主要包括:
步骤S101:根据待写入数据所在文件占用的FAT表项对应的簇空间的剩余存储空间以及待写入数据的数据量,确定出需查找的FAT文件***的FAT表项的数量。具体的,确定待写入数据所在文件占用的FAT表项,以及确定占用的FAT表项对应的簇空间的剩余存储空间;计算待写入数据的数据量,以及确定待写入数据的数据量与剩余存储空间的差值;根据差值确定出需查找的FAT文件***的FAT表项的数量。确定出的需查找FAT表项中不包括待写入数据所在文件占用的FAT表项。其中,由于待写入数据不一定为整个文件数据,可能需要保存该文件数据中的一部分,例如编辑一个word文件,已编辑并保存了1000字,然后又编辑了300字,该300字需要保存。该300字为待写入数据,该word文件为待写入数据所在文件。在将该300字进行保存时,判断该300字所属的word文件是否占用FAT表项,因为该word文件已保存了1000字,且该保存的1000字未占满一个簇空间,所以可知该待写入数据占用了FAT表项。
如果开始写一个新的文件,则该文件没有已占用的FAT表项,此时该待写入数据所在文件占用的FAT表项所对应的簇空间的剩余存储空间为零,则在写入的过程中,不用将该数据写入到剩余存储空间。另外,如果待写入数据所在文件存在占用的FAT表项,但是该占用的FAT表项所对应的簇空间的剩余存储空间为零,在写入的过程中,不用将该数据写入到该占用的FAT表项所对应的簇空间的剩余存储空间。以上情况都包含在本发明实施例中。
在步骤S101之前,还根据待写入数据的数据量确定存储数据的簇空间充足。如果待写入数据的数据量大于存储数据的所有簇空间的容量,则说明该存储设备不能完全将该待写入数据存储,此时说明存储数据的簇空间不充足。如果待写入数据的数据量小于存储数据的簇空间的容量,则说明该存储设备可以完全将该待写入数据存储,此时说明存储数据的簇空间充足,进而可将该待写入数据进行写入到簇空间中。
FAT文件***为FAT32文件***。其中,FAT32文件***带有32位的簇数,是一种广泛流行于PC领域的文件***,用于在操作***环境下,对磁盘等存储介质上的文件数据进行组织和管理。FAT32文件***是FAT文件***中的一个重要组成部分,得到了Windows、Linux等主流操作***的支持,被广泛应用于小容量移动存储设备中。并且,应用了FAT32文件***的嵌入设备,可在不同硬件环境、不同操作***间传递通用数据格式的数据,极大的提高了数据的传递效率。
步骤S102:查找出对应该数量的FAT表项,并且将待写入数据写入剩余存储空间以及查找出的FAT表项所对应的簇空间。在本步骤中,查找和写入的过程没有先后。例如,需要查找的FAT表项的数量为100,则在查找出10个连续的FAT表项之后,将数据写入该10个连续的FAT表项所对应出的簇空间块,然后继续查找剩余90个FAT表项,并在查找的过程中将数据写入。该簇空间块由几个连续的FAT表项所对应的簇空间组成,例如FAT第101表项、第102表项和第103表项所对应的三个簇空间组成一个簇空间块,FAT第111表项和第112表项所对应的两个簇空间组成一个簇空间块等。在本发明实施例中,也可将这100个FAT表项全部查找出,其中包含若干个连续的AT表项所对应出的簇空间块,然后再将数据写入查找出的FAT表项所对应的簇空间块。通过该过过程,可一次性写入10连续的FAT表项所对应出的簇空间块所能容纳的数据,解决了现有技术中每次只获取一个簇空间来进行数据处理导致的数据写入速度慢的问题。
在查找出对应该数量的FAT表项的过程中,逐条查询FAT表项是否被占用,从当前标记为空闲的FAT表项开始查找,查找序号连续的空闲FAT表项。进而,连续的空闲FAT表项所对应的簇空间构成簇空间块。在数据写入时,每次写入的数据量不仅仅是一个簇空间所包含的字节数,而是一个簇空间块所包含的字节数。不仅减少了检索根目录、查找FAT表项的次数、节省了时间,而且由于小容量存储设备大数据量写入数据快于小数据量写入速度的特性,更是大大提高了数据写入的速度。
在将所述待写入数据写入所述剩余存储空间以及查找出的FAT表项所对应的簇空间之后,还包括:判断是否存在待写入的剩余数据;如果存在,根据所述待写入的剩余数据的数据量确定所需的FAT表项的数量;查找出对应该数量的FAT表项,并且将所述待写入的剩余数据写入该FAT表项所对应的簇空间,直至所有的数据都被写入。通过该过程,可避免数据遗漏的问题。
图2是根据本发明实施例的基于FAT文件***的数据写入的方法的优选流程的示意图。
如图2所示,本发明实施例的基于FAT文件***的数据写入的方法的优选流程包括:
步骤S201:判断待写入数据所在文件是否占用FAT表项。如果是,则进行步骤S202;否则,进行步骤S205。
在小容量存储设备格式化为FAT文件***后,小容量存储设备的写入线程收到待写入数据,根据该待写入数据的数据量以及该小容量存储设备剩余的存储空间,判断小容量存储设备剩余的存储空间是否充足,如果充足则进行步骤S201,否则放弃进行数据写入。其中,小容量存储设备包括SD卡、U盘等,且对于小容量存储设备,连续扇区大数据量单次写入速度是远快于分散扇区小数据量写入速度的。在本发明实施例中,以SD卡为例进行进一步说明。
步骤S202:判断待写入数据所在文件占用的FAT表项对应的簇空间是否存在剩余存储空间。如果是,进行步骤S203;否则,进行步骤S205。
经过步骤S201判断出当前待写入数据所在文件占用FAT表项,说明该当前待写入数据为连续内容,即当前待写入数据可能无法从一个簇起始位置开始写入。如果当前待写入数据所在文件占用的FAT表项对应的簇空间存在剩余存储空间,则说明该数据无法从一个簇起始位置开始写入,为保证该数据连续,则需要将该剩余存储空间存储完全之后才能再将数据写入其他簇空间。
步骤S203:将待写入数据写入所在文件占用的FAT表项所对应的簇空间的剩余存储空间。如果当前待写入数据不能从一个簇空间的起始位置开始写入,则计算当前簇空间能够被继续写入的数据量,写入对应数据量的数据,则当前簇空间被写满。通过该过程可以保证文件***实现数据的接续存储,从而不必要求每个数据段都需要从簇的起始位置开始写入。该过程只针对一个簇,即上一次写入没有写满一个簇,下次写入则需要在当前簇中的空闲位置继续写入。
步骤S204:判断是否存在没有写入的剩余数据。如果是,则进行步骤S205;否则,数据写入过程结束。存在没有写入的剩余数据说明还有数据待写入,需要将该剩余数据继续进行写入。
步骤S205:根据当前待写入数据的数据量确定所需的FAT表项的数量。该步骤中的当前待写入数据为步骤S204确定出的没有写入的剩余数据。根据每个FAT表项代表的SD卡物理存储空间大小和当前待写入数据的数据量大小,计算当前目标写入数据需要占用的存储空间,从而得到本次存储需要占用的FAT表项总数。
根据小容量存储设备例如SD卡的物理结构,FAT表项本身也是存储于SD上的一个个扇区中,每个扇区中包含有部分条目的FAT表项。现有技术每读取一个FAT表项,就需要从卡中读取对应的扇区内容,如果检索多个FAT表项就要多次读写SD卡,比较耗时。本发明实施例读取一次SD卡扇区,则可检索对应数量的FAT表项,进而减少了SD卡的读写次数,从而节约时间。
步骤S206:查找出对应该数量的FAT表项,并且将当前待写入数据写入查找出的FAT表项所对应的簇空间。具体的,根据文件目录或者根目录,查找到数据当前需要占用的FAT表项,且查找的FAT表项的数量为步骤S205确定出的数量。从当前查找到的首个空闲FAT表项开始逐条查找,寻找连续的空闲FAT表项。如果查找到的连续FAT表项代表的存储空间大小足够存储目标数据,则占用查找到的空闲FAT表项,一次性写入全部数据。如果查找到的连续FAT表项代表的存储空间大小不足以写入全部目标数据,则根据可用存储空间的大小,占用查找到的空闲FAT表项,写入对应空间大小的文件数据。通过该过程,可以减少FAT表项的查找次数,增加单次写入SD卡的扇区块的数据量,从而提高整个文件的写入速度。
如果根据本发明实施例的基于FAT文件***的数据写入的方法将数据A写入SD卡,具体过程如下。其中,待写入数据A为接续文件内容,且数据量为41472字节;该SD卡的情况为:每扇区512字节,每簇8个扇区即4096字节,且当前数据A所在文件占用的FAT表项为100,第100表项空闲512字节。确认当前SD卡容量充足后,确认数据A为接续内容(该数据A需写入第100表项所对应的簇空间的剩余空间,不能从一个簇空间的起始位置开始写入),向FAT第100表项对应的簇空间的剩余存储空间写入相应数据量的数据。待写入数据A所在文件占用的FAT表项为100对应的簇空间的剩余存储空间为512字节,待写入数据A的数据量为41472字节,则需查找的FAT文件***的FAT表项的数量为10。
写入剩余存储空间的数据为待写入数据A的前512字节,写入后剩余40960字节。可从FAT第100表项之后的表项开始逐条查找,如果查找到FAT第101表项、第102表项空闲,103被占用,则本次可以写入两个簇空间(该两个簇空间构成一个簇空间块)容量的数据,写入剩余40960字节的前8192字节。由于还有待写入数据,故从FAT102开始查找,找到第104表项至第111表项为空闲(第104表项至第111表项所对应的簇空间构成一个簇空间块),此空闲的簇空间为所需要的剩余空间最大值,则一次性写入剩余的全部数据。
本发明实施例的基于FAT文件***的数据写入的方法在将全部数据写入之前,可确定出需查找的FAT文件***的FAT表项的数量,进而在查找对应该数量的FAT表项时,查找出由连续几个的FAT表项所对应出的簇空间块。并且对于小容量存储设备,连续扇区大数据量单次写入速度是远快于分散扇区小数据量写入速度的。所以,在查找出由连续的几个FAT表项所对应出的簇空间块后,可将数据写入该簇空间块,减少了多次访问文件目录查找FAT表项的时间,提升了基于FAT文件***的数据写入的速度,解决了现有技术中只能一次查找出一个FAT表项造成的数据写入效率低的问题。并且,本发明公开的基于FAT文件***的数据写入的方法能够实现文件接续写入,兼容单个数据多次写入和修改的情况,符合现有FAT文件***存储数据的规则,没有破坏现有FAT文件***体系结构,实施性高。
图3是根据本发明实施例的基于FAT文件***的数据写入的***的主要模块的示意图。
如图3所示,本发明实施例的基于FAT文件***300的数据写入的***主要包括:
确定模块301,用于根据待写入数据所在文件占用的FAT表项所对应的簇空间的剩余存储空间以及待写入数据的数据量,确定出需查找的FAT文件***的FAT表项的数量。确定模块301还用于:确定待写入数据所在文件占用的FAT表项,以及确定占用的FAT表项对应的簇空间的剩余存储空间;计算待写入数据的数据量,以及确定待写入数据的数据量与剩余存储空间的差值;根据差值确定出需查找的FAT文件***的FAT表项的数量。
查找和写入模块302,用于查找出对应该数量的FAT表项,并且将待写入数据写入剩余存储空间以及查找出的FAT表项所对应的簇空间。在查找出对应该数量的FAT表项的过程中,是逐条查询FAT表项是否被占用,从当前标记为空闲的FAT表项开始查找,查找序号连续的空闲FAT表项。进而,连续的空闲FAT表项所对应的簇空间构成簇空间块。在数据写入时,每次写入的数据量不再仅仅是一个簇空间所包含的字节数,而是一个簇空间块所包含的字节数。不仅减少了检索根目录、查找FAT表项的次数、节省了时间,而且由于小容量存储设备大数据量写入数据快于小数据量写入速度的特性,更是大大提高了数据写入的速度。
本发明实施例的基于FAT文件***还包括空间充足确定模块,用于根据待写入数据的数据量确定存储数据的簇空间充足。如果待写入数据的数据量大于存储数据的所有簇空间的容量,则说明该存储设备不能完全将该待写入数据存储,此时说明存储数据的簇空间不充足。如果待写入数据的数据量小于存储数据的簇空间的容量,则说明该存储设备可以完全将该待写入数据存储,此时说明存储数据的簇空间充足,进而可将该待写入数据进行写入到簇空间中。
根据本发明实施例的技术方案,通过确定出需查找的FAT文件***的FAT表项的数量,可查找出由连续几个的FAT表项所对应出的簇空间块。并且对于小容量存储设备,连续扇区大数据量单次写入速度是远快于分散扇区小数据量写入速度的。所以,在查找出由连续的几个FAT表项所对应出的簇空间块后,可将数据写入该簇空间块,减少了多次访问文件目录查找FAT表项的时间,提升了基于FAT文件***的数据写入的速度,解决了现有技术中只能一次查找出一个FAT表项造成的数据写入效率低的问题。并且,本发明的公开的基于FAT文件***的数据写入的方法没有破坏原FAT文件***体系结构,而且兼容单个数据多次写入和修改的情况,能够实现文件接续写入。
图4示出了可以应用本发明实施例的基于FAT文件***的数据写入的方法或基于FAT文件***的数据写入的***的示例性***架构400。
如图4所示,***架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果反馈给终端设备。
需要说明的是,本发明实施例所提供的基于FAT文件***的数据写入的方法一般由服务器405执行,相应地,基于FAT文件***的数据写入的***一般设置于服务器405中。
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图5,其示出了适于用来实现本发明实施例的终端设备的计算机***500的结构示意图。图5示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机***500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有***500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括确定模块、查找和写入模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,确定模块还可以被描述为“根据待写入数据所在文件占用的FAT表项对应的簇空间的剩余存储空间以及所述待写入数据的数据量,确定出需查找的FAT文件***的FAT表项的数量的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:根据待写入数据所在文件占用的FAT表项所对应的簇空间的剩余存储空间以及所述待写入数据的数据量,确定出需查找的FAT文件***的FAT表项的数量;查找出对应所述数量的FAT表项,并且将所述待写入数据写入所述剩余存储空间以及查找出的FAT表项所对应的簇空间。
根据本发明实施例的技术方案,通过确定出需查找的FAT文件***的FAT表项的数量,可查找出由连续几个的FAT表项所对应出的簇空间块。并且对于小容量存储设备,连续扇区大数据量单次写入速度是远快于分散扇区小数据量写入速度的。所以,在查找出由连续的几个FAT表项所对应出的簇空间块后,可将数据写入该簇空间块,减少了多次访问文件目录查找FAT表项的时间,提升了基于FAT文件***的数据写入的速度,解决了现有技术中只能一次查找出一个FAT表项造成的数据写入效率低的问题。并且,本发明的公开的基于FAT文件***的数据写入的方法没有破坏原FAT文件***体系结构,而且兼容单个数据多次写入和修改的情况,能够实现文件接续写入。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (8)
1.一种基于FAT文件***的数据写入的方法,其特征在于,包括:
根据待写入数据所在文件占用的FAT表项对应的簇空间的剩余存储空间以及所述待写入数据的数据量,确定出需查找的FAT文件***的FAT表项的数量;
查找出对应所述数量的FAT表项,并且将所述待写入数据写入所述剩余存储空间以及查找出的FAT表项所对应的簇空间;
所述查找出对应所述数量的FAT表项的过程包括:
从当前标记为空闲的FAT表项逐条查询,查找出序号连续的空闲FAT表项,构成簇空间块,以在数据写入时,每次写入的数据量是一个簇空间块所包含的字节数。
2.根据权利要求1所述的方法,其特征在于,所述确定出需查找的FAT文件***的FAT表项的数量的步骤包括:
确定待写入数据所在文件占用的FAT表项,以及确定所述占用的FAT表项对应的簇空间的剩余存储空间;
计算所述待写入数据的数据量,以及确定所述待写入数据的数据量与所述剩余存储空间的差值;
根据所述差值确定出需查找的FAT文件***的FAT表项的数量。
3.根据权利要求1所述的方法,其特征在于,在确定出需查找的FAT文件***的FAT表项的数量之前,还包括:
根据所述待写入数据的数据量确定存储数据的簇空间充足。
4.一种基于FAT文件***的数据写入的***,其特征在于,包括:
确定模块,用于根据待写入数据所在文件占用的FAT表项对应的簇空间的剩余存储空间以及所述待写入数据的数据量,确定出需查找的FAT文件***的FAT表项的数量;
查找和写入模块,用于查找出对应所述数量的FAT表项,并且将所述待写入数据写入所述剩余存储空间以及查找出的FAT表项所对应的簇空间;
所述查找和写入模块还用于:从当前标记为空闲的FAT表项逐条查询,查找出序号连续的空闲FAT表项,构成簇空间块,以在数据写入时,每次写入的数据量是一个簇空间块所包含的字节数。
5.根据权利要求4所述的***,其特征在于,所述确定模块还用于:确定待写入数据所在文件占用的FAT表项,以及确定所述占用的FAT表项对应的簇空间的剩余存储空间;计算所述待写入数据的数据量,以及确定所述待写入数据的数据量与所述剩余存储空间的差值;根据所述差值确定出需查找的FAT文件***的FAT表项的数量。
6.根据权利要求4所述的***,其特征在于,还包括空间充足确定模块,用于根据所述待写入数据的数据量确定存储数据的簇空间充足。
7.一种基于FAT文件***的数据写入的装置,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-3中任一所述的方法。
8.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-3中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710984493.0A CN109697019B (zh) | 2017-10-20 | 2017-10-20 | 基于fat文件***的数据写入的方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710984493.0A CN109697019B (zh) | 2017-10-20 | 2017-10-20 | 基于fat文件***的数据写入的方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109697019A CN109697019A (zh) | 2019-04-30 |
CN109697019B true CN109697019B (zh) | 2022-12-27 |
Family
ID=66225368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710984493.0A Active CN109697019B (zh) | 2017-10-20 | 2017-10-20 | 基于fat文件***的数据写入的方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109697019B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111897484B (zh) * | 2019-05-05 | 2024-03-29 | 兆易创新科技集团股份有限公司 | 一种数据存储方法、装置、电子设备及存储介质 |
CN111159064B (zh) * | 2019-12-30 | 2023-09-01 | 南京六九零二科技有限公司 | 一种低复杂度数据块缓存方法 |
CN113064605B (zh) * | 2021-03-26 | 2023-09-15 | 中国航空无线电电子研究所 | 基于配置的多数据卡自动识别与卸载方法 |
CN113900994B (zh) * | 2021-12-02 | 2022-03-01 | 新华三智能终端有限公司 | 一种文件写入方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101042696A (zh) * | 2006-03-23 | 2007-09-26 | 北京握奇数据***有限公司 | 智能卡存储***及该***中文件创建管理的方法 |
CN101876956A (zh) * | 2009-12-15 | 2010-11-03 | 北京中星微电子有限公司 | Sd卡的文件存取方法及装置 |
CN101882132A (zh) * | 2009-04-27 | 2010-11-10 | 深圳市闪联信息技术有限公司 | 虚拟fat文件***的创建及读取方法以及装置 |
CN102841894A (zh) * | 2011-06-22 | 2012-12-26 | 比亚迪股份有限公司 | 一种文件分配表的数据存储方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100533443C (zh) * | 2007-05-11 | 2009-08-26 | 北京中星微电子有限公司 | 利用文件分配表进行磁盘数据簇链接及寻道的方法 |
CN101303667B (zh) * | 2008-06-25 | 2010-06-09 | 炬力集成电路设计有限公司 | 建立磁盘空簇表及查找磁盘空簇的方法和装置 |
JP2011022875A (ja) * | 2009-07-17 | 2011-02-03 | Sanyo Electric Co Ltd | データアクセス装置 |
CN102004700A (zh) * | 2010-11-26 | 2011-04-06 | 华为终端有限公司 | 闪存的存储空间分配方法及装置 |
CN104394371B (zh) * | 2014-12-01 | 2017-09-29 | 北京理工大学 | 一种适合大量连续图像采集和快速存储的*** |
-
2017
- 2017-10-20 CN CN201710984493.0A patent/CN109697019B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101042696A (zh) * | 2006-03-23 | 2007-09-26 | 北京握奇数据***有限公司 | 智能卡存储***及该***中文件创建管理的方法 |
CN101882132A (zh) * | 2009-04-27 | 2010-11-10 | 深圳市闪联信息技术有限公司 | 虚拟fat文件***的创建及读取方法以及装置 |
CN101876956A (zh) * | 2009-12-15 | 2010-11-03 | 北京中星微电子有限公司 | Sd卡的文件存取方法及装置 |
CN102841894A (zh) * | 2011-06-22 | 2012-12-26 | 比亚迪股份有限公司 | 一种文件分配表的数据存储方法 |
Non-Patent Citations (3)
Title |
---|
"FAT文件***元数据合理性检测的研究";李奇阳;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20161215(第2016年第12期);第I138-31页正文第16-18,22-30页 * |
"基于ARM7TDMI实现简易嵌入式文件";张延伟 等;《电脑知识与技术》;20070823(第2007年第16期);第1081-1083页 * |
"基于TMS320VC5509A的SD卡文件***的开发应用";刘晓明 等;《工业控制计算机》;20080625;第21卷(第2008年第6期);第79-80页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109697019A (zh) | 2019-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102240557B1 (ko) | 데이터 저장 방법, 장치 및 시스템 | |
CN107870728B (zh) | 用于移动数据的方法和设备 | |
US11003625B2 (en) | Method and apparatus for operating on file | |
CN109697019B (zh) | 基于fat文件***的数据写入的方法和*** | |
CN109947668B (zh) | 存储数据的方法和装置 | |
US8578096B2 (en) | Policy for storing data objects in a multi-tier storage system | |
CN107480205B (zh) | 一种进行数据分区的方法和装置 | |
CN107704202B (zh) | 一种数据快速读写的方法和装置 | |
US11226778B2 (en) | Method, apparatus and computer program product for managing metadata migration | |
US11237761B2 (en) | Management of multiple physical function nonvolatile memory devices | |
CN108255989A (zh) | 图片存储方法、装置、终端设备及计算机存储介质 | |
CN110569218B (zh) | 一种ext文件***离线修改方法、装置及存储介质 | |
CN112783887A (zh) | 一种基于数据仓库的数据处理方法及装置 | |
CN109165723B (zh) | 用于处理数据的方法和装置 | |
CN106156038B (zh) | 数据存储方法和装置 | |
CN110427394B (zh) | 数据操作方法及装置 | |
US20170344578A1 (en) | Compressed data layout for optimizing data transactions | |
CN113076175B (zh) | 用于虚拟机的内存共享方法及装置 | |
CN112711572B (zh) | 适用于分库分表的在线扩容方法和装置 | |
CN113760861A (zh) | 一种数据迁移的方法和装置 | |
CN113742376A (zh) | 一种同步数据的方法、第一服务器以及同步数据的*** | |
CN113986134B (zh) | 存储数据的方法、读取数据的方法和装置 | |
CN112699116A (zh) | 一种数据处理方法和*** | |
US20240103722A1 (en) | Metadata management for transparent block level compression | |
CN113778318A (zh) | 一种数据存储方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |