Android 检测内部存储器?

Android 检测内部存储器?,android,filesystems,android-sdcard,Android,Filesystems,Android Sdcard,我正在开发一个将文件从SD卡移动到内存存储的应用程序。我需要的是: 1.检测要移动的文件的大小 2.检测内部存储器中可用内存的大小 3.两者比较 这将在可用内存小于文件大小时发出一些警报。 如何处理前两点。如果有人处理过类似类型的问题?我也做过类似的处理,但是针对一个目录中的多个(音乐)文件以及系统可用的任何装载点。我不能100%确定下面的解释是否适用于内部存储,但它至少应该给您一些有用的提示 通过调用文件,可以轻松获得文件的大小: 请注意,如果someFile实际上是一个目录,则不会定义结果。

我正在开发一个将文件从SD卡移动到内存存储的应用程序。我需要的是:

1.检测要移动的文件的大小

2.检测内部存储器中可用内存的大小

3.两者比较

这将在可用内存小于文件大小时发出一些警报。
如何处理前两点。如果有人处理过类似类型的问题?

我也做过类似的处理,但是针对一个目录中的多个(音乐)文件以及系统可用的任何装载点。我不能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
    }