社区
其它技术问题
帖子详情
fat32文件系统怎么查找长文件名的
xiaofen8
2011-03-03 04:18:30
百度找了一下没有我想要的答案,fat32找长文件名是根据找到的第一个长目录项来定位短目录项直接比较对应的短文件名呢,还是逐个逐个长目录项去比较(别扭的是长目录项是倒序排列的),
...全文
849
70
打赏
收藏
fat32文件系统怎么查找长文件名的
百度找了一下没有我想要的答案,fat32找长文件名是根据找到的第一个长目录项来定位短目录项直接比较对应的短文件名呢,还是逐个逐个长目录项去比较(别扭的是长目录项是倒序排列的),
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
70 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaofen8
2011-03-05
打赏
举报
回复
address mark是放物理地址的么
ecc是一段可执行代码还是每个扇区都相同的50字节值(即如果此处刚好被弄花了,那么这个值就会被改变,通过这个来校验)
Lactoferrin
2011-03-05
打赏
举报
回复
闪存的页和内存的页可能大小一样,但结构肯定是不一样的
http://en.wikipedia.org/wiki/Disk_sector
xiaofen8
2011-03-05
打赏
举报
回复
和你交流可以学到很多技术上的东西,思维上的就要靠自己了
xiaofen8
2011-03-05
打赏
举报
回复
那扇区内部还有更小的结构,是什么
闪存的页和内存的页一样吗
Lactoferrin
2011-03-05
打赏
举报
回复
那扇区内部还有更小的结构。
这里的等同是存取的最小单位
xiaofen8
2011-03-05
打赏
举报
回复
链接上说每个区块构成几个页,意思是一个块由几个页构成,扇区是硬盘最小的单位,那么等同的闪存最小的单位应该是页,不是吗
闪存的也和内存的页一样吗
Lactoferrin
2011-03-05
打赏
举报
回复
什么意思
xiaofen8
2011-03-05
打赏
举报
回复
闪存中和扇区等同的是块,每次存取的单位是块
块比页大?那么闪存中和扇区等同的不是页么
xiaofen8
2011-03-05
打赏
举报
回复
nice
Lactoferrin
2011-03-05
打赏
举报
回复
address mark有扇区号和一些当前状态
ecc和海明码类似
xiaofen8
2011-03-04
打赏
举报
回复
短文件名只使用长文件名的前两个字母,通过数学操纵长文件名的剩余字母生成短文件名的后四个字母,
然后加后缀"~1"直到最后(如果有必要,或是其他数字以避免重复的文件名),不是这样吗
把OEM字符串开头到第一个句点的最多8个字符复制到8.3文件名的主要名称部分,都没有用到数学的方法?
Lactoferrin
2011-03-04
打赏
举报
回复
转换方法
传给文件系统的名字要是unicode字符串,是长文件名
首先把unicode字符串变成大写
然后把unicode字符串转换成OEM字符串,如果有不在OEM编码范围或者不符合8.3格式的字符,用_代替并决定这是一个丢失的转换
去掉OEM字符串开头结尾的空格和开头的句点
把OEM字符串开头到第一个句点的最多8个字符复制到8.3文件名的主要名称部分,把OEM字符串结尾到最后一个句点的最多3个字符复制到8.3文件名的扩展名部分
这个8.3文件名叫基本文件名
如果这个基本文件名不和已有文件名冲突并且长文件名符合8.3格式并且没有丢失的转换,把基本文件名作为短文件名
否则在基本文件名的主要名后面加上~x,如果超过8个字符就覆盖原来的
这时需要遍历整个目录来确定x的数值,保证不和已有短文件名冲突,x的范围是1-999999
这样就得到了短文件名
xiaofen8
2011-03-04
打赏
举报
回复
说实话这样做没有记住长度方便,lseek(handle, 0, SEEK_END)的实现如果直接用文件长度来计算最后一个簇是哪个比较方便
转换成短文件名用数学操纵是什么方法
Lactoferrin
2011-03-04
打赏
举报
回复
[Quote=引用 16 楼 xiaofen8 的回复:]
如果目录项的第一字节是0就说明它是最后一个,后面的不能当作此目录的东西,这句话是否用一个目录项指示到了eof,这个目录项只是一个占位符
[/Quote]
是
xiaofen8
2011-03-04
打赏
举报
回复
如果目录项的第一字节是0就说明它是最后一个,后面的不能当作此目录的东西,这句话是否用一个目录项指示到了eof,这个目录项只是一个占位符
Lactoferrin
2011-03-04
打赏
举报
回复
目录的长度不能由描述它的目录项得到,目录项的长度是32字节
xiaofen8
2011-03-04
打赏
举报
回复
[Quote=引用 10 楼 xiaofen8 的回复:]
即c:\1234567890123转换成c:\123456~1
我只需要读第一个长目录项(即长文件的最后一项)记下检验值和短目录项的名字比较,然后位移到短目录项(可以从长目录项的第一个字节得知距离)然后用c:\123456~1去和短目录项比较,不用还原长目录链
数学操纵是什么方法
[/Quote]
这样会引起冲突所以很麻烦
如果目录项的第一字节是0就说明它是最后一个,后面的不能当作此目录的东西,什么意思呢,目录项的长度不是0吗
Lactoferrin
2011-03-04
打赏
举报
回复
http://en.wikipedia.org/wiki/Flash_memory
维基百科是好东西
xiaofen8
2011-03-04
打赏
举报
回复
块?能否介绍一下闪存的这些概念,你现在挺好的水平高有比我多的乐趣
Lactoferrin
2011-03-04
打赏
举报
回复
闪存中和扇区等同的是块,每次存取的单位是块
加载更多回复(48)
FAT32
文件系统
长
文件名
的表示
FAT32
文件系统
长
文件名
的表示
FATFS支持英文
长
文件名
这段时间在做SD卡的驱动以及在此基础上增加
FAT32
文件系统
. SD卡目前使用SDHC 16G的TF卡,读写擦功能都支持. 那么
FAT32
文件系统
,我们可以在网上找到开源的FAT
文件系统
这个
文件系统
,目前很多人都在使用. 移植方面很简单,只要实现diskio.c里面的几个函数就可以了. 另外,还有一个配置文件ffconf.h这个文件,主要配置一些功能.如是否支持
长
文件名
,中文编码等
数据恢复小练习3.5、6、7、8(第三章
FAT32
文件系统
(3)完结)
数据恢复小练习3.5、6、7、8(第三章
FAT32
文件系统
(3)完结) 3.5
FAT32
-FAT分析 3.6
FAT32
-
长
文件名
分析 3.7
FAT32
-根目录与子目录 3.8
FAT32
-文件的删除与恢复 谢谢大家的支持,您的一键三连是 罡罡同学前进的最大动力! ...
长
文件名
在FAT
文件系统
上的实现
关于fat
文件系统
长
文件名
的实现
FAT32
的一个重要的特点是完全支持
长
文件名
。
长
文件名
依然是记录在目录项中的。为 了低版本的OS 或程序能正确读取
长
文件名
文件,系统自动为所有
长
文件名
文件创建了一 个对应的短
文件名
,使对应数据既可以用
长
文件名
寻址,也可以用短
文件名
寻址。不支持
长
文件名
的OS 或程序会忽略它认为不合法的
长
文件名
字段,而支持
长
文件名
的OS 或程序 则会以
长
文件名
为显式项来记录和编辑,并隐藏起短
文件名
。
FAT32
长
文件名
短
文件名
目录项
1.
长
文件名
与短
文件名
1.1. 何为短
文件名
短
文件名
是DOS+FAT12/FAT16时代的产物,命名规则为8.3 8是指
文件名
,3是指扩展名(完整文件=
文件名
.扩展名)
文件名
不能超过8个字节,如果多于8个字节,在DOS里不会被识别 扩展名不能超过3个字节,如果多于3个字节,在DOS里不会被识别1.2. 何为
长
文件名
文件名
超出8个字节或扩展名超出3个字节都是
长
文件名
FAT32
文件系统
完全
其它技术问题
3,882
社区成员
9,059
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章