【问题标题】:Creating a Folder创建文件夹
【发布时间】:2018-09-03 15:35:38
【问题描述】:

我正在尝试创建一个文件夹调用"YouDown",此时我不在乎文件夹的位置,但此时我只想弄清楚创建它。我发现我的第一个问题是 mkdir()mkdirs() 由于不知道它是布尔值而被忽略。我创建了 success 的布尔值,现在它不会被忽略。在此之后,我创建了检测到创建到已经存在的每个步骤的 log.d。它注册它"Doesn't exist""Being Created",然后是"Created""Creation Failed"。它跳转到"Creation Failed"。我现在发现的所有帮助都只是重复我过去几天一直在阅读的内容。我也在研究如何将其应用于特定路径方式,例如我希望在 Music 文件夹中创建的变量字符串

// 最新尝试

String Tag2 = "YouDown"

if (!dir.exists()) {
       Log.d(Tag2,"Doesnt Exist");
       boolean success = false;

       try{
           success = dir.mkdir();
           Log.d(Tag2,"Being Created");

       }
       catch(SecurityException se){
           //handle it
       }
       if(success) {
       Log.d(Tag2, "Created");
       } else{
           Log.d(Tag2, "Creation Failed");
    }
}

// 其他尝试

String path = "/sdcard/Music/Youdown"

if(new File(path).exists()){

Log.d(Tag2, "Exists");

} else {

Log.d(Tag2, "Being Created");
Boolean succes = new File(path).mkdir();

if(success){

  Log.d(Tag2, "Created"

 } else {

  Log.d(Tag2, "Failed"
}

最新尝试

File dir = new File(Environment.getExternalStorageDirectory(), path2);
    Boolean A = dir.mkdirs();

    if(A){
        Log.d(Tag2,"Created");
    }
    if(!A){
        Log.d(Tag2,"Failed");
    }

【问题讨论】:

  • “目前我不在乎文件夹在哪里”:你应该关心。您需要使用允许您写作的位置。
  • 那我怎么写位置。我希望它在音乐文件夹中,我已经来到这个 /sdcard/Music/YouDown

标签: java android file directory creation


【解决方案1】:

虽然 Android 有一个分层文件系统,但您的应用只能在某些地方读写。作为开始,我建议使用getDir()android.content.Context 方法。正如文档所述:

如果需要,检索并创建一个新目录,应用程序可以在其中放置自己的自定义数据文件。您可以使用返回的 File 对象在此目录中创建和访问文件。请注意,通过 File 对象创建的文件只能由您自己的应用程序访问;只能设置整个目录的模式,不能设置单个文件的模式。

如果要访问共享目录需要调用其他方法,例如Context.getExternalFilesDir()

【讨论】:

    【解决方案2】:

    如果您只为您的应用创建目录,这样如果您的应用被删除,文件夹也会被删除,您可以使用getFilesDir()

    File internalDir = getContext().getFilesDir();
    String path = "/Music/Youdown";       
    // to create it you can call, new File(internalDir, path).mkdir();
    

    或者,如果您想要外部存储,您可以使用Environment.getExternalStorage();,如下所示:

    String path = "/Music/Youdown";       
    File f = new File(Environment.getExternalStorageDirectory(), path );
     if (!f.exists()) {
         f.mkdirs();
     }
    

    【讨论】:

    • 我喜欢你的替代想法,但我的 getExternalStorage 出现错误。
    • 除了我使用布尔值的区别之外,现在没有错误。如果没有值,则忽略 mkdirs。我已经更新了帖子
    • @MickeyT 你的设备有 SDCARD 吗?
    • 我现在注意到了,但我要删除它的“/sdcard/”部分
    • /sdcard 没有任何区别
    猜你喜欢
    • 2016-10-03
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 2013-08-23
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多