Environment.getExternalStorageDirectory() 获取硬件存储
Posted
技术标签:
【中文标题】Environment.getExternalStorageDirectory() 获取硬件存储【英文标题】:Environment.getExternalStorageDirectory() get hardware Storage 【发布时间】:2013-02-08 22:57:26 【问题描述】:我正在尝试通过 Environment.getExternalStorageDirectory() 从 SD 卡获取所有文件列表,但我从硬件存储中返回列表。我试过硬编码,但结果是一样的。知道是什么原因造成的吗?
我的代码
String path = Environment.getExternalStorageDirectory().toString()+"/";
Log.d("Files", "Path: " + path);
File f = new File(path);
File file[] = f.listFiles();
Log.d("Files", "Size: "+ file.length);
for (int i=0; i < file.length; i++)
Log.d("Files", "FileName:" + file[i].getName());
返回
Path: /mnt/sdcard/
Size: 21
FileName:LOST.DIR
FileName:.android_secure
FileName:Music
FileName:Podcasts
但我在 SD 卡中没有 Podcast 等。
半答案:Environment.getExternalStorageDirectory() 在某些情况下会进入内存存储。如果我尝试 String path = "/mnt/external_sd/";然后它的工作。但在其他设备中,存储在其他目录中。
【问题讨论】:
只是想知道,你确定没有“播客”等名称的隐藏文件吗? 看我的编辑“Half-Answer”,在我的设备中“/sdcard/”不是sdcard,这是硬件存储。我必须使用“/mnt/external_sd/”,但这仅适用于我的情况。我正在尝试找到一些适用于所有设备的解决方案。 【参考方案1】:试试这个代码,
File filepath = Environment.getExternalStorageDirectory();
File dir = new File(filepath.getAbsolutePath()
+ "/Save PIP/");
dir.mkdirs();
File file = new File(dir, System.currentTimeMillis() + ".jpg");
// Utils.showAlert("Image Saved to SD Card", "PIP Effect", "Ok", FrameActivity.this);
if (file.exists()) file.delete();
try
output = new FileOutputStream(file);
bitmap_final.compress(Bitmap.CompressFormat.PNG, 100, output);
output.flush();
output.close();
catch (Exception e)
// TODO Auto-generated catch block
e.printStackTrace();
希望对你有所帮助。
【讨论】:
以上是关于Environment.getExternalStorageDirectory() 获取硬件存储的主要内容,如果未能解决你的问题,请参考以下文章