Android 在SD卡或内存上创建目录的行为
在我的应用程序中,我必须让用户选择保存文件的位置。它必须从sd卡或内存中选择 我尝试制作一些如下的测试目录: 用于Sd卡Android 在SD卡或内存上创建目录的行为,android,android-sdcard,Android,Android Sdcard,在我的应用程序中,我必须让用户选择保存文件的位置。它必须从sd卡或内存中选择 我尝试制作一些如下的测试目录: 用于Sd卡 File sdCard = Environment.getExternalStorageDirectory(); File dir = new File (sdCard.getAbsolutePath() + "/External dir"); dir.mkdirs(); 内部 File path2 = Environment.getDataDirectory(
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + "/External dir");
dir.mkdirs();
内部
File path2 = Environment.getDataDirectory();
File dir22 = new File (path2.getAbsolutePath() + "/Internal dir");
dir22.mkdirs();
只生成“外部目录”。“内部目录”不存在。此外,我已经在我的手机上安装了“OI文件管理器”,而且我无法对内部存储进行任何dir
我的手机根本没有Sd卡。上面的代码没有给我任何关于没有sd卡的错误。
我还尝试:
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
double sdAvailSize = (double)stat.getAvailableBlocks()*(double)stat.getBlockSize();
double mb= sdAvailSize / (1024*1024);
Log.w("sd-card",""+mb); //show me that i have 1240 mb on sd-card
及
为什么会这样?请仔细阅读本文,首先了解各种存储之间的区别:我已经编辑了您的标题。看到共识在哪里了吗?不,他们不应该。
File path = Environment.getDataDirectory();
StatFs stats = new StatFs(path.getPath());
int availableBlocks = stats.getAvailableBlocks();
int blockSizeInBytes = stats.getBlockSize();
int freeSpaceInBytes = availableBlocks * blockSizeInBytes;
double mb2= (availableBlocks*blockSizeInBytes)/(1024*1024);
Log.w("telephone",""+mb2); ///shows me 283 mb on phone