簡體   English   中英

在外部SD卡中創建文件

[英]Create File in External SD Card

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

路徑是我的位置。

您可以使用context.getApplicationContext().getExternalFilesDirs()來獲取可用的字符串路徑數組,包括所需的字符串路徑。 但是,它僅在Android 4.4+中可用。

如果您沒有SD卡,這是您使用代碼設置SD卡路徑的方法,Android只會將數據存儲在INTERNAL STORAGE中首先在啟動Activity上聲明此變量

public static String THE_PATH;

然后在onCreate Bundle的同一Activity中調用此方法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";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM