- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个安卓应用程序,可以将文件从谷歌文档下载到设备上的 SD 卡。 (原因:有我无法在应用程序中打开的 PDF-s)。
它成功写入 SD 卡,直到我达到 10000 个文件中的第 8000 个文件。
写入SD的代码:
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 行抛出的异常:
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),8GB,FAT32 格式。我正在使用 Desire HD。
如您所见,文件名很长。我将文件保存到/mnt/sdcard/中的目录,异常后的状态是(通过 Astro):
大小:519,668,573 字节
文件数:8037
设备自由大小:4.91 G
不知道写SD有没有限制?
谢谢
最佳答案
我相信这个 stackoverflow 问题会回答您的问题。
Is there a limit for the number of files in a directory on an SD card?
我自己也查了一些资料,发现基本上是限制了文件的个数和文件名的长度。根据我在上面链接中引用的 Microsoft 文档中阅读的内容 http://msdn.microsoft.com/en-us/windows/hardware/gg463080.aspx您的文件名长度有问题。
首先是文件名的长度。较长的文件名会占用更多空间。目录中有 65,536 个 32 字节条目的限制。这是因为目录文件容器的最大大小为 2,097,152 字节 (65536*32)。但是,如果您的文件名超过 8.3,它们将占用多个条目。长文件名占用的空间也比简单的字符总和要多。文件系统会产生诸如校验和之类的开销,并附带一个简短的 8.3 文件名。
最好的建议是大幅缩短文件名,这应该可以解决您的问题。
希望这对您有所帮助。
关于android - 设备上没有剩余空间但 SD 卡未满,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6717787/
我是一名优秀的程序员,十分优秀!