在外部存储上创建文件夹

时间:2016-10-07 17:24:04

标签: java android android-external-storage

我正在尝试在外部microSD卡上创建文件夹,但它无法正常工作。

String sdpath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/sdcard/Ankur Jain";

Toast.makeText(Second.this,sdpath,Toast.LENGTH_LONG).show();

File file = new File(sdpath);
if(!file.exists()){file.mkdirs();
    Toast.makeText(Second.this,"Created path",Toast.LENGTH_LONG).show();

}

我也添加了所有权限。

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

并构建gradle app,如下所示

compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig {
    applicationId "jss.intentgame"
    minSdkVersion 11
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"

现在停止在卡片上创建文件夹是什么?

4 个答案:

答案 0 :(得分:0)

首先,new File()不会创建文件。它会创建一个File对象。您的问题没有用于创建文件或目录的代码。

其次,Environment.getExternalStorageDirectory().getAbsolutePath()+"/sdcard/Ankur Jain"在大多数(如果不是全部)Android设备上都不会指向“外部microSD卡”。这指向您尝试在external storage上创建的某个子目录。

第三,您在Android 4.4 +上没有removable storage的任意访问权限。

如果您想允许用户使用可移动存储,请在Android 4.4及更高版本上使用the Storage Access Framework。在此之前,没有针对可移动存储的Android SDK支持。

答案 1 :(得分:0)

让我分享您可以看到的基本工作代码并进行相应的尝试。希望这可以帮助您创建文件夹。

  1. 要在SD卡上创建文件夹,请先定义路径和目录名称。之后,我创建了一个包含返回位置的方法的类,绝对路径引用。
  2. public class AppConst{
        private static String APPLICATION_PATH = Environment.getExternalStorageDirectory().getPath();
        private static String DIR_HOME = “YourRootDirName”;
            private static String IMAGE_HOME = “SubDirectoryName”;
    
            private static String getApplicationPath() {
             return (APPLICATION_PATH + "/");
            }
    
           public static String getRootPath() {
            return (getApplicationPath() + DIR_HOME + "/");
           }
            public static String getImageAbsolutePath() {
            return getRootPath() + IMAGE_HOME + "/";
           }
    }
    
    1. 创建Constants类之后,Next我们创建可帮助我们创建目录的StorageManager。此类需要AppConst的帮助才能获知并知道方向位置的绝对位置。
    2. public class StorageManager {
          public static void verifyImagePath() {
              File imageDirectory = new File(AppConst.getImageAbsolutePath());// It use the path that we define in constant file.
              if (!imageDirectory.exists()) {
                  imageDirectory.mkdir();
              }
          }
      }
      }
      
      1. 现在在您的应用程序中,找出您要开始创建文件夹的位置,并在下面的代码中写下。

        StorageManager. verifyImagePath();
        
      2. 上述语句确实在存储选项的定义位置创建了文件夹。

      3.   

        注意:确保您必须提供读/写权限   在您的应用程序清单文件中。如果您在棉花糖中运行该应用程序   设备确保您授予您的读/写权限   应用

答案 2 :(得分:0)

我有办法解决我的问题。获取存储设备列表,修剪其路径,我们将获得SD卡存储的绝对路径。用普通的mkdris创建文件夹。这是代码。

 File[] externalStorageFiles = ContextCompat.getExternalFilesDirs(MainActivity.this, null);
    storagepath = new String[externalStorageFiles.length];                                              for (int i = 0; i < externalStorageFiles.length; i++) {
      storagepath[i] = externalStorageFiles[i].toString();
            System.out.println(storagepath[i]);
                                              }

答案 3 :(得分:0)

将代码更改为getPath()而不是getAbsolutePath()。在我的情况下处理所有条件。

Environment.getExternalStorageDirectory().getPath()