首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设备上没有剩余空间,但SD卡未满

设备上没有剩余空间,但SD卡未满
EN

Stack Overflow用户
提问于 2011-07-16 21:48:24
回答 2查看 6.8K关注 0票数 1

我有安卓应用程序,从谷歌文档下载文件到设备上的SD卡。(原因:有我无法在应用程序中打开的PDF-s )。

它成功地写入SD卡,直到我获得总共10000个文件中的第8000个文件。

写入SD的代码:

代码语言:javascript
复制
InputStream is = response.getContent();
FileOutputStream fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/"+preferences.getString("username", "manas11")+"/" + tmp_entry.resourceID.replace(":","~_~")+"~_~"+tmp_entry.title));
byte[] buf = new byte[1024];
int len;
while((len=is.read(buf))>0)
    fos.write(buf,0,len);

由第2行引发的异常:

代码语言:javascript
复制
java.io.FileNotFoundException: /mnt/sdcard/matulic.realestate.hr/file~_~0B3n2EnTf5ATnYTJkNTNmM2QtZDJjYy00YjNhLWJlZjQtYTE4MTU5MjI2N2E5~_~Kuæa Marina Sevid 399.00 m2 - LJETNA AKCIJA IZVRSN - k359.txt (No space left on device)

SD卡是microSD™存储卡(SD 2.0兼容),8 8gb,FAT32格式。我用的是Desire HD。

如你所见,文件名很长。我将文件保存到/mnt/sdcard/目录中,异常后的状态为(由Astro):

大小:519,668573字节

文件数: 8037

设备可用大小:4.91G

写SD有没有我不知道的限制?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2011-07-16 22:46:09

我相信这个堆栈溢出问题会回答你的问题。

Is there a limit for the number of files in a directory on an SD card?

我自己也检查了一些信息,发现基本上归结为文件数量和文件名长度的限制。根据我在上面http://msdn.microsoft.com/en-us/windows/hardware/gg463080.aspx链接中引用的微软文档中所读到的内容,您的文件名长度有问题。

首先是文件名的长度。文件名越长,占用的空间越大。目录中有65,536个32字节的条目限制。这是因为目录文件容器的最大大小是2,097,152字节(65536*32)。但是,如果您的文件名大于8.3,则它们将占用多个条目。此外,长文件名比简单的字符总和占用更多的空间。文件系统会产生一些开销,比如创建校验和和一个简短的8.3文件名。

最好的建议是大幅缩短文件名,这应该可以解决您的问题。

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2011-07-16 22:35:00

这可能是FAT32的局限性。

FAT32目录可以有65,536个目录项。每个文件和子目录包含2到13个条目,这取决于其名称的长度,因此这些条目可能在您认为已用完它们之前很久就消失了。您总共有22,657个文件,可以很容易地使用65,000个条目。

来自here.

在本地存储文件时,您是否尝试过减少文件名?真的需要这么长时间吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6717787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档