【问题标题】:Create File in External SD Card在外部 SD 卡中创建文件
【发布时间】:2017-08-06 15:33:12
【问题描述】:

我是 android 开发的新手。 我想在我的外部 SD 卡中创建一个文件。我搜索了很多并尝试了不同的代码。但它是在设备存储中创建的,或者根本不创建。 我得到了我的 SD 卡路径,它在 /mnt/extSdCard 中。 我什至尝试了几个代码,但没有一个不起作用。 此代码找到了我的 SD 卡位置:

 public static String getExternalSdCardPath() {
    String path = null;

    File sdCardFile = null;
    List<String> sdCardPossiblePath = Arrays.asList("external_sd", "ext_sd", "external", "extSdCard");

    for (String sdPath : sdCardPossiblePath) {
        File file = new File("/mnt/", sdPath);

        if (file.isDirectory() && file.canWrite()) {
            path = file.getAbsolutePath();
            Log.i("LOG", "path is: " + path);

            String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmmss").format(new Date());
            File testWritable = new File(path, "test_" + timeStamp);
            if (testWritable.mkdirs()) {
                testWritable.delete();
            } else {
                path = null;
            }
        }
    }

    if (path != null) {
        sdCardFile = new File(path);
    } else {
        sdCardFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
    }
    return sdCardFile.getAbsolutePath();
}

路径是我的位置。

【问题讨论】:

标签: android file storage android-sdcard sd-card


【解决方案1】:

您可以使用context.getApplicationContext().getExternalFilesDirs() 获取可用字符串路径的数组,包括您想要的路径。但是,它仅适用于 Android 4.4+。

【讨论】:

    【解决方案2】:

    如果您没有 SD 卡 Android 将仅将数据存储在 INTERNAL STORAGE 首先在启动Activity上声明这个变量

    public static String THE_PATH;
    

    然后在同一个Activity的onCreate Bundle中调用这个方法onAvail()

        // Is External Storage Available if so use it and desi the path for DBHelper
    public void onAvail() {
    
        String state = Environment.getExternalStorageState();
    
        if (state.equals(Environment.MEDIA_MOUNTED) && 
    

    (!state.equals(Environment.MEDIA_MOUNTED_READ_ONLY))) {

            File removable = ContextCompat.getExternalFilesDirs(this, null)[1];
            THE_PATH = String.valueOf(removable);
            //System.out.println("EXTERNAL PATH ====> " + THE_PATH);
            THE_PATH = THE_PATH + "/Documents/";
            //System.out.println("new path ====> "+THE_PATH);
        }
    }
    

    我希望你有一个 DBHelper 类,这是该类中发生的事情

    import static <app name here>.MainActivity.THE_PATH;
    
     // Variable str is set in MainActivity as Public static
    // to be accessible in the DBHelper Class 
    

    //从MainAvtivity调用

    公共类 DBHelper 扩展 SQLiteOpenHelper {

    public static final String DB_NAME = THE_PATH +"PassWord";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 2012-09-20
      • 2017-05-17
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      相关资源
      最近更新 更多