2

これは私のAndroidSDカードのディレクトリ構造です

 sdcard/alQuranData/Reader1/Surah

これがディレクトリを作成するための私のコードです

File SDCardRoot = new File(Environment.getExternalStorageDirectory().toString() + "alQuranData/Reader1/Surah");
                Toast.makeText(getApplicationContext(), SDCardRoot.toString(), Toast.LENGTH_LONG).show();
                if (!SDCardRoot.exists()) {
                    Log.d("DIRECTORY CHECK", "Directory doesnt exist creating directory");
                    SDCardRoot.mkdir();
                }

これで、ルートalQuranDataにすでに作成されています。sdcardReader1ディレクトリのみを作成した場合は正常に機能しますが、追加した場合はReader1/Surah作成されませんでした。

私も試しmkdirs()ましたが、うまくいきません。

4

4 に答える 4

2

エラーまたは例外が発生していますか。mkdirs()メソッド呼び出しの戻り値を確認してみてください。また、次のコードを試してください。

File SDCardRoot = new File(Environment.getExternalStorageDirectory().toString() + "/alQuranData/Reader1/Surah");
Toast.makeText(getApplicationContext(), SDCardRoot.toString(), Toast.LENGTH_LONG).show();
if (!SDCardRoot.exists()) {
    Log.d("DIRECTORY CHECK", "Directory doesnt exist creating directory");
    SDCardRoot.mkdirs();
}

マニフェストファイルに次の権限が追加されていることも確認してください。

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

私はちょうど次のコードをテストしました、そしてそれは私の終わりに働いています:

File SDCardRoot = new File(Environment.getExternalStorageDirectory()
        .toString() + "/alQuranData/Reader1/Surah");
Toast.makeText(getApplicationContext(), SDCardRoot.toString(),
        Toast.LENGTH_LONG).show();
if (!SDCardRoot.exists()) {
    Log.d("DIRECTORY CHECK",
            "Directory doesnt exist creating directory "
                    + Environment.getExternalStorageDirectory()
                            .toString());
    boolean outcome = SDCardRoot.mkdirs();

    Log.d("DIRECTORY CHECK",
            "outcome for " + SDCardRoot.getAbsolutePath() + "     "
                    + outcome);
}

あなたの投稿に記載されているように、alQaranDataフォルダーを手動で追加し、アクセス許可を追加すると、最後に機能し始めます。このコードを確認してください。

于 2012-10-09T05:16:04.853 に答える
0

このコードを使用してください.....)

  private void createSdCatalogs(String str1){
    //str1 = "/alQuranData"
File folder = new File(Environment.getExternalStorageDirectory() + str1);
boolean success = false;
if (!folder.exists()) {
    success = folder.mkdir();
    Log.v("Adding line", "/");
}}
private void createSdCatalogs(String str2)   { 
//str2 = "/alQuranData/Reader1";
File folder1 = new File(Environment.getExternalStorageDirectory() + str2);
boolean success1 = false;
if (!folder1.exists()) {
    success1 = folder1.mkdir();
    Log.v("Adding line", "/");
}

}
于 2012-10-09T04:20:40.707 に答える
0

Javaを使用すると、一度に複数のディレクトリを作成することはできません。フォルダ名を1つずつ宣言し、ディレクトリの作成に進む必要があります。したがって、最初に作成します

  1. alQuranData
  2. alQuranData / Reader1 /
  3. alQuranData / Reader1 / Surah

提供したものと同じコードを使用します。

于 2012-10-09T04:27:45.697 に答える
-1

デフォルトでは、Androidには一度に複数のディレクトリを作成する方法はありません。1つずつ作成する必要があり、チェックが作成されるかどうか。

しかし、私は同様の目的を達成するために以下のコードを作成しました。一度に複数のディレクトリを作成するために使用できます...


public static boolean recursivelyMakeDir(File endDirectory,File baseDir) {

        if (!baseDir.exists()){
            return false;
        }
        ArrayList<String> allDirectoryList = parseAndGetListDir(endDirectory.getAbsolutePath().substring(baseDir.getAbsolutePath().length()));

        File  currentDir = baseDir;

        for (int i=0; i< allDirectoryList.size() ; i++){

            File dir = new File(currentDir.getAbsolutePath() + "/" + allDirectoryList.get(i) );

            if (!dir.exists()){

                if (!dir.mkdir()){
                    return false;
                }
            }

            currentDir  = dir;
        }

        return true;
    }

    public static ArrayList<String> parseAndGetListDir(String data) {

        ArrayList<String> allDirectoryList = new ArrayList<>();
        boolean exit = false;
        String dir = "";

        for (int i=0; i<data.length() ; i++){

            if (data.charAt(i) == '/'){
                if (!dir.equals("")){
                    allDirectoryList.add(dir);
                    dir = "";
                }
            }else {
                dir = dir + data.charAt(i);
            }

        }

        if (!dir.equals("")){
            allDirectoryList.add(dir);
        }

        return allDirectoryList;
    }

使用法 :

// you 100% sure that this  directory is already exist.
File baseDir = Environment.getExternalStorageDirectory();

// desire directory wanted to create.
File endDirectory = new File(Environment.getExternalStorageDirectory() +"kkk/SSS/aaa/ddd/b");

if(recursivelyMakeDir(endDirectory ,baseDir )){

  // dir created sucessessfully
}else{
  // failed
}

于 2022-01-04T15:35:23.643 に答える