gpt4 book ai didi

java - 高效存储文件控制 block

转载 作者:行者123 更新时间:2023-12-01 15:40:35 25 4
gpt4 key购买 nike

我目前的任务是用 Java 创建文件系统。我正在尝试将其实现为类似 FAT 的形式。我担心的是我没有有效地存储或读取每个 FCB。每个文件都有一个 FCB,我目前的格式为:

 ___________________
| |
| size of file name |
|___________________|
| |
| file name |
|___________________|
| |
| # of data pointers|
|___________________|
| data pointer #1 |
|-------------------|
| bytes to read |
|-------------------|
| data pointer #2 |
|-------------------|
| bytes to read |
|-------------------|
| ... |
|-------------------|
| data pointer n |
|-------------------|
| bytes to read |
|___________________|

当我想阅读 FCB 时,我会执行以下操作:

1. Get the first four bytes
2. Convert to int -> bytes in file name
3. Read that many bytes for file name
4. Read next four bytes
5. Convert to int -> number of pointers
6. Read 4 * number of pointers
6a. Read address from pointer #1
6b. Read number of bytes, starting from address

最后,我的文件系统将存储为

 ___________________
| number of pointers|
|-------------------|
| FCB#1 |
|-------------------|
| ... |
|-------------------|
| FCB N |
|-------------------|
| Data |
| |
| |
|___________________|

我担心存储 FCB 时我的开销会太昂贵。不过,对于 FAT 来说,我应该这样做吗?或者我完全误解了它?

最佳答案

我怀疑您可能稍微误解了一些事情,或者只是需要一些关于如何更好地构建数据的指导。根据经验,我检测到几种不同类型的数据混合在一起,这可能会导致困惑。

我曾经实现过一些文件系统,并且发现将尽可能多的数据类型分离为非常方便:

1. File data : the file's data.
2. File meta-data : tells you about the file data (where it is found, permissions, ...)
3. File system meta-data : tells you what's free to use and what is not

根据文件系统的不同,可能会有一些重叠。例如,在基于 FAT 的 FS(例如 DosFS 使用的 FAT)中,磁盘本质上分为两部分:文件分配表 (FAT) 和数据空间。 FAT 只是一个条目表,用于标识数据空间中的哪些簇(磁盘 block )已被分配。然而,为了帮助节省内存,它使用了一些技巧......

1. Each cluster in the data space maps to a unique entry in the FAT.
2. The FAT entry contents identify the NEXT cluster that contains data (it's a linked list).
3. Special FAT entry values are used to mark a free entry, and the end of the chain.
4. Each cluster is the same size.

目录,可以被认为是遵循特殊规则的特殊文件。根据 FS,目录项可以是固定大小,也可以是可变大小。对于使用经典 8.3 命名约定的基于 FAT 的 DosFS,每个条目的大小相同。目录条目必须为您提供发现文件名、从何处开始查找其数据以及在何处查找其属性数据(例如文件大小和权限)的方法。有些会直接将所有这些信息存储为条目的一部分,另一些会告诉您从哪里开始找到它。

我希望这会有所帮助。

关于java - 高效存储文件控制 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8110048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com