当你的系统中,存储介质不使用文件系统进行数据的存取时,你通常是这样操作:按照数据在存储介质中的起始地址,数据字节数,进行读写操作。这样的操作会比较原始,针对的是数据块,而没有文件的概念。但这是最基本的,底层的必须功能。在底层,存储介质中的每一个存储单元都可以存储文件数据。
当你使用文件系统后,文件系统的所有操作最终都是调用前面提到的底层功能,但文件系统提供给你的是更容易理解的接口,它对整个存储介质的空间进行管理,记录,为了达到这些功能,势必要占用一部分存储空间用作文件系统的一些记录。举个例子,你在文件系统根目录下创建100个目录,目录并非数据,没有任何数据一堆目录也没有意义,但它是文件系统用于管理文件类目的分支标识。它一样会占用存储介质的存储空间。
文件系统就是让你可以通过它提供的接口进行文件操作,现在你可以通过类似 open("abca.txt") 的函数来打开文件系统根目录下的abc目录下a.txt文件,进行读取或改写数据。文件系统知道如何找到a.txt这个数据块在存储介质的位置,而不需要你操心。它的方便之处是显而易见的。
文件系统 听起来 很复杂,所谓系统,只不过是一套特定功能的代码,而且代码量可以很小(fatfs总共才几个文件),它有高内聚低耦合的特性,它的本质作用是承上启下,作为一个中间层,它是对底层存储操作的封装,使上层能使用统一的文件操作接口进行数据存储和管理。
文件系统 对存储介质的管理,是一套规范的数据结构,如何为分区,如何为目录,如何为文件?每个分区,每个目录,每个文件,他们的节点地址在哪?数据长度又是多少?文件的创建时间,权限等等都属于文件系统记录管理的范畴,不同的文件系统使用不同的数据结构来包含这些信息。不同的文件系统程序,是无法解释其他文件系统所写入的数据的。一块崭新的存储卡,上面是没有任何文件系统结构,需要进行格式化,第一次格式化就把存储空间按照规范的数据结构给布置好了。
被文件系统操作的存储介质,如果你再使用底层的接口进行任何地址写入或擦除数据,或者出现某个数据块坏掉,都极有可能使整个存储介质上的数据无法被文件系统正确解释,但这并不代表所有数据丢失,你可能只是无意间破坏了文件系统所布置的数据结构,文件系统就不能正常识别里面的节点,文件内容,或整个存储空间,会要求你重新格式化。
每当出现这样的惨剧时,可以通过一些工具,使用底层读取接口将数据读取,然后根据数据中的一些常见文件数据的特定结构(比如可执行文件的头尾结构,bmp图片的头尾结构),来拆分数据块,还原出丢失的文件。
每当写到这么多的时候,总是忘情的来一句:阿弥陀佛~老衲不行了
当你的系统中,存储介质不使用文件系统进行数据的存取时,你通常是这样操作:按照数据在存储介质中的起始地址,数据字节数,进行读写操作。这样的操作会比较原始,针对的是数据块,而没有文件的概念。但这是最基本的,底层的必须功能。在底层,存储介质中的每一个存储单元都可以存储文件数据。
当你使用文件系统后,文件系统的所有操作最终都是调用前面提到的底层功能,但文件系统提供给你的是更容易理解的接口,它对整个存储介质的空间进行管理,记录,为了达到这些功能,势必要占用一部分存储空间用作文件系统的一些记录。举个例子,你在文件系统根目录下创建100个目录,目录并非数据,没有任何数据一堆目录也没有意义,但它是文件系统用于管理文件类目的分支标识。它一样会占用存储介质的存储空间。
文件系统就是让你可以通过它提供的接口进行文件操作,现在你可以通过类似 open("abca.txt") 的函数来打开文件系统根目录下的abc目录下a.txt文件,进行读取或改写数据。文件系统知道如何找到a.txt这个数据块在存储介质的位置,而不需要你操心。它的方便之处是显而易见的。
文件系统 听起来 很复杂,所谓系统,只不过是一套特定功能的代码,而且代码量可以很小(fatfs总共才几个文件),它有高内聚低耦合的特性,它的本质作用是承上启下,作为一个中间层,它是对底层存储操作的封装,使上层能使用统一的文件操作接口进行数据存储和管理。
文件系统 对存储介质的管理,是一套规范的数据结构,如何为分区,如何为目录,如何为文件?每个分区,每个目录,每个文件,他们的节点地址在哪?数据长度又是多少?文件的创建时间,权限等等都属于文件系统记录管理的范畴,不同的文件系统使用不同的数据结构来包含这些信息。不同的文件系统程序,是无法解释其他文件系统所写入的数据的。一块崭新的存储卡,上面是没有任何文件系统结构,需要进行格式化,第一次格式化就把存储空间按照规范的数据结构给布置好了。
被文件系统操作的存储介质,如果你再使用底层的接口进行任何地址写入或擦除数据,或者出现某个数据块坏掉,都极有可能使整个存储介质上的数据无法被文件系统正确解释,但这并不代表所有数据丢失,你可能只是无意间破坏了文件系统所布置的数据结构,文件系统就不能正常识别里面的节点,文件内容,或整个存储空间,会要求你重新格式化。
每当出现这样的惨剧时,可以通过一些工具,使用底层读取接口将数据读取,然后根据数据中的一些常见文件数据的特定结构(比如可执行文件的头尾结构,bmp图片的头尾结构),来拆分数据块,还原出丢失的文件。
每当写到这么多的时候,总是忘情的来一句:阿弥陀佛~老衲不行了
举报