Android:如何在外部(可移动)SD卡中创建文件夹和文件?
我试图通过应用程序在外部存储目录中创建文件夹和文件。Android:如何在外部(可移动)SD卡中创建文件夹和文件?
File f = new File("/storage/emulated/0", mFileName);
boolean isCreated = f.mkdir();
这始终是成功的,isCreated是真的有任何异常或警告,并创建文件夹。
Environment.getExternalStorageDirectory()也会返回“/ storage/emulated/0”。
但是当我尝试创建外部存储卡(可移动存储卡)文件夹,如下所示:
File f = new File("/storage/6161-3165", mFileName);
boolean isCreated = f.mkdir();
始终f.mkdir()返回false,而不是创建的文件夹。 同时,我可以看到W/System.err的:......在logcat中如下:
**02-22 14:50:47.551 13536-13536/com.testapp.extsd W/System.err: mkdir failed: EACCES (Permission denied) : /storage/6161-3165/uyyyy**
我已经在清单文件中提到WRITE_EXTERNAL_STORAGE权限。仍然没有创建文件夹。
我想知道如何在外部卡存储中创建文件夹和文件。
存储在我的手机的文件结构是:
[email protected]:/storage $ ls -l
drwxrwx--x root sdcard_rw 2017-02-05 07:59 6161-3165
drwx--x--x root sdcard_rw 2016-01-01 17:34 emulated
drwxr-xr-x system system 2017-02-05 07:59 enc_emulated
drwxr-xr-x root root 2017-02-05 07:59 self
壳@ j7xelte:/存储$
等待响应...
你所添加的第一一些允许您AndroidManifest
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
要在外部存储媒体文件夹E,称这样的事情
String folder_main = "NewFolder";
File f = new File(Environment.getExternalStorageDirectory(), folder_main);
if (!f.exists()) {
f.mkdirs();
}
此外,针对Android> 6,你必须调用运行许可
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
获得导致
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
Log.v(TAG,"Permission: "+permissions[0]+ "was "+grantResults[0]);
//resume tasks needing this permission
}
}
,并检查它
if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
Log.v(TAG,"Permission is granted");
//File write logic here
return true;
}
已添加权限。 Environment.getExternalStorageDirectory()API返回“/存储/模拟/ 0” 但我想在设置/应用程序列表“/存储/ 6161-3165” 我已经检查应用程序的权限来创建文件夹。它显示为授予的存储权限。 – user2318724
@ user2318724/storage /不是外部目录。这是系统目录,你只能用root permision –
我不是想创造条件/存储/路径文件夹/文件中有创建显示目录或文件。 使用adb shell,在存储文件夹下,我们会得到以下文件夹列表。 \t壳@ j7xelte:/存储$ LS -l \t drwxrwx - X根sdcard_rw 2017年2月5日7时59分6161-3165 \t drwx - X - X根sdcard_rw 2016年1月1日17: 34仿真 \t drwxr-XR-X系统的系统2017年2月5日7时59分enc_emulated \t drwxr-XR-X根根2017年2月5日7时59分自 两个模拟和6161-3165(SD卡是像这样显示)位于根文件夹下。 使用file.mkdir(),我们可以在仿真的/ 0 /文件夹下创建文件夹。 – user2318724
试试这个代码....
String externalDataPath = Environment.getExternalStorageDirectory() + "/yourFolder";
File f = new File(externalDataPath);
try {
if (!f.exists()) {
f.mkdir();
}
externalDataPath = externalDataPath + "/" + filename;
f = new File(externalDataPath);
if (!f.exists())
f.createNewFile();
externalDataPath = Environment.getExternalStorageDirectory().toString();
} catch (IOException e) {
e.printStackTrace();
}
希望这有助于:)
Ayush .. Environment.getExternalStorageDirectory()api return“/ storage/emulated/0” 但我想创建文件夹“/ storage/6161-3165" – user2318724
面临着同样的问题,你有什么办法解决? – Parth