我正在尝试使用以下代码在 SD 卡下创建一个目录:
file = new File(Environment.getExternalStorageDirectory(), "foldername");
if(!file.exists()){
file.mkdirs();
System.out.println("Directory created: " + file.getPath());
}
但这最终会在创建的目录下创建一个文件夹:/storage/emulated/0/foldername 这最终不会保存在 SD 卡上的任何位置。有谁知道如何在SDCARD中成功创建目录吗?
这里是一个获取 Android 10+ 的“已安装”SD 卡的对象。卡一是SIM卡,卡二是micro SD卡。当您使用Environment.getExternalStorageDirectory()时,它会为您提供第一个插槽中的SIM卡,该卡是只读的,因此您无法对其进行写入。这是一个读取已安装 SD 卡的对象:
package com.example.audioplayer;
import android.content.Context;
import android.os.Environment;
import android.os.Parcel;
import android.os.storage.StorageManager;
import android.os.storage.StorageVolume;
import java.util.ArrayList;
import java.util.List;
public class MountedVolumes {
public ArrayList<String> mMountedVolumes = new ArrayList<>();
public MountedVolumes(Context context) {
StorageManager storageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);
if (storageManager == null) {
return;
}
List<StorageVolume> storageVolumes = storageManager.getStorageVolumes();
for (StorageVolume storageVolume : storageVolumes) {
if (storageVolume.getState().equals(Environment.MEDIA_MOUNTED)) {
Parcel p = Parcel.obtain();
storageVolume.writeToParcel(p, 0);
p.setDataPosition(0);
p.readString();
String path = p.readString();
p.recycle();
mMountedVolumes.add(path);
}
}
}
public String GetVolume(int i) {
if (mMountedVolumes.isEmpty()) {
return null;
}
if (i >= mMountedVolumes.size()) {
return null;
}
return mMountedVolumes.get(i);
}
}