Android 检测内部存储器?
我正在开发一个将文件从SD卡移动到内存存储的应用程序。我需要的是: 1.检测要移动的文件的大小 2.检测内部存储器中可用内存的大小 3.两者比较 这将在可用内存小于文件大小时发出一些警报。Android 检测内部存储器?,android,filesystems,android-sdcard,Android,Filesystems,Android Sdcard,我正在开发一个将文件从SD卡移动到内存存储的应用程序。我需要的是: 1.检测要移动的文件的大小 2.检测内部存储器中可用内存的大小 3.两者比较 这将在可用内存小于文件大小时发出一些警报。 如何处理前两点。如果有人处理过类似类型的问题?我也做过类似的处理,但是针对一个目录中的多个(音乐)文件以及系统可用的任何装载点。我不能100%确定下面的解释是否适用于内部存储,但它至少应该给您一些有用的提示 通过调用文件,可以轻松获得文件的大小: 请注意,如果someFile实际上是一个目录,则不会定义结果。
如何处理前两点。如果有人处理过类似类型的问题?我也做过类似的处理,但是针对一个目录中的多个(音乐)文件以及系统可用的任何装载点。我不能100%确定下面的解释是否适用于内部存储,但它至少应该给您一些有用的提示 通过调用文件,可以轻松获得文件的大小: 请注意,如果
someFile
实际上是一个目录,则不会定义结果。因此,为了得到一个目录的大小,迭代它的所有子目录(当然,子目录也可能包含目录)
为了检索有关文件系统空间的信息,我使用了类,它只是statfs()
的Java包装器。计算可用空间是一个简单的乘法:
// 'fromFreeBytes' is the source file/directory size
StatFs toDirStats = new StatFs(mToDir.getAbsolutePath());
long toFreeBytes = ((long)toDirStats.getAvailableBlocks() * (long)toDirStats.getBlockSize());
if (toFreeBytes < fromFreeBytes) {
//insufficient available space
}
/'fromFreeBytes'是源文件/目录大小
StatFs toDirStats=新的StatFs(mToDir.getAbsolutePath());
long-toFreeBytes=((long)toDirStats.getAvailableBlocks()*(long)toDirStats.getBlockSize());
if(toFreeBytes
最后,重要的是要记住,如果要在不同的装入点之间移动文件,不能使用文件的方法。相反,您必须使用InputStream和OutputStream跨服务器复制数据
祝你好运
long file_size=file.length()代码>
File data_path=Environment.getDataDirectory();
StatFs stat=newstatfs(data_path.getPath());
长可用内存=stat.getBlockSize()*stat.getAvailableBlocks()代码>
// 'fromFreeBytes' is the source file/directory size
StatFs toDirStats = new StatFs(mToDir.getAbsolutePath());
long toFreeBytes = ((long)toDirStats.getAvailableBlocks() * (long)toDirStats.getBlockSize());
if (toFreeBytes < fromFreeBytes) {
//insufficient available space
}