在Android上进行SD卡的低级操作

3

在Android中,是否可以使用Java/NDK实现低级访问,例如创建类似于Scandisk或卡片碎片整理器的卡片扫描器?我经常在我的卡片上移动很多东西,导致它很快就会产生碎片。我有在Windows上进行FAT32碎片整理的经验,但我想在Android上做这件事。


这并不是真正与编程有关的内容。 - richq
2个回答

2

与硬盘不同,碎片化并不会对SD卡产生太大影响,因为SD卡没有旋转部件或移动头部,随机访问与顺序访问之间的差异可以忽略不计。

换句话说,SD卡不需要碎片整理;事实上,对SD卡进行碎片整理只会降低其使用寿命,因为SD卡的存储单元有读/写次数限制。

如果您需要“扫描磁盘”(或在Unix/Linux中称为“fsck”,代表“文件系统检查”),我认为Android的默认shell没有fsck,但您应该能够从计算机上fsck SD卡。


尝试将SD卡分段,使一个新的MP3文件被分成1000个碎片。然后尝试从该文件中读取。接着尝试从连续的文件中读取。 - Axarydax
@Axarydax: 然而,差别微不足道;碎片化确实会导致一些小的开销,以便解析和处理元数据以及查找空块。然而,如果您将文件碎片化为1000个部分,则会遇到另一个问题,即您正在使用FAT。实际上,如果您使用的是一个体面的文件系统,很难创建超过几个片段(平均MP3文件大小为4MB,而它必须是一个非常愚蠢的文件系统才会在有一个4MB块的情况下需要搜索1000个大小为4kb的空间)。 - Lie Ryan

0

在某种程度上,问题是操作系统级别的权限而不是SDK与NDK之间的问题。但是Lie Ryan建议从外部机器执行fsck或其他操作,利用了SD卡独有的权限绕过机制。 - Chris Stratton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接