当前位置: 首页 > 知识库问答 >
问题:

Android:如何在外部(可移动)SD卡中创建文件夹和文件?

胡致远
2023-03-14

我试图通过应用程序在外部存储目录中创建文件夹和文件。

    File f = new File("/storage/emulated/0", mFileName);
    boolean isCreated = f.mkdir();

这总是成功的,isCreated为true,没有任何异常或警告,并且创建了文件夹。

Environment.getExternalStorageDirectory()也返回"/存储/仿真/0"。

但当我尝试在外部存储卡(可移动存储卡)中创建文件夹时,如下所示:

    File f = new File("/storage/6161-3165", mFileName);
     boolean isCreated = f.mkdir();

始终f.mkdir()返回false,并且未创建文件夹。同时我可以看到W/System。错误:。。。在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权限。未创建静止文件夹。

我想知道如何在外部卡存储中创建文件夹和文件。

我手机中存储的文件结构是:

shell@j7xelte:/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

shell@j7xelte:/存储$

正在等待响应。。。

共有2个答案

冯鸿哲
2023-03-14

尝试此代码。。。。

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();
        }

希望这有助于:)

皇甫德庸
2023-03-14

首先,您必须向AndroidManifest添加一些权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

要在外部存储中创建文件夹,请调用以下命令

String folder_main = "NewFolder";

File f = new File(Environment.getExternalStorageDirectory(), folder_main);
if (!f.exists()) {
    f.mkdirs();
}

另外,对于Android

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;
}
 类似资料:
  • 我试图创建SD卡并将图像加载到该卡上。我不知道是什么命令出错了,现在我的SD卡没有显示为文件夹,而是显示为图像。现在,我无法读取SD卡或将文件夹或图像添加到SD卡上,因为它显示“mkdir失败,只读文件系统”。我尝试了新的eclipse和新的android sdk,但问题是一样的。也许在我的系统的某个地方,属性已经设置好了。我是android的新手,我被困得很厉害。请帮忙! 我试图直接推送图像..

  • 问题内容: 我正在使用以下代码从服务器下载文件,然后将其写入sd卡的根目录,一切正常: 但是,;表示文件将始终写入root /mnt/sdcard。是否可以指定某个文件夹来写入文件? 例如: 问题答案:

  • 我是Android系统的新手。我得到了一个应用程序,在其中我列出了所有SD文件和文件夹,包括doc,pdf,xls,jpg等。 如何在Android中以编程方式获取我的SD卡中所有文件夹和文件的文件夹名和文件名? 我正在使用这段代码,但无法获得文件夹名称(根文件夹和子文件夹)。

  • 问题内容: import java.io.File; File folder = new File(Environment.getExternalStorageDirectory() + “/TollCulator”); boolean success = true; if (!folder.exists()) { //Toast.makeText(MainActivity.this, “Dire

  • Android Api 29在文件和文件夹方面有很大的变化。到目前为止,我还没有找到在内部存储器中创建一个公共可见的文件夹的方法。我创建的每个文件夹只能由我的应用程序看到。 我编写了一个应用程序来创建数据文件,这些文件将被其他应用程序拾取,例如总指挥官将它们复制到目的地。在我激活Api 29之前,一切都很好。我的一些客户确实使用像素手机,他们使用Android 10。 如何在Android 10中

  • 我需要在android外部可移动存储设备上创建一个文件夹kalid。但是我的文件夹是在手机存储上创建的。我已经从教程中实现了这两个代码。 上面的代码在内部内存中创建kalids文件夹 我的清单如下所示 如何在外部存储设备中创建文件夹?