从mkdir()创建文件失败

时间:2017-11-17 08:45:18

标签: android mkdir

我尝试在我的Android模拟器中创建文件,但是当我完成我的代码时。 我找不到我从android设备监视器创建的文件。

这是我的代码:

var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {    
    $scope.bool = true; 
    $scope.a = 0;
    $scope.ternaryTrue = function(){
        console.log("ternary executed on true");   
    }
    $scope.ternaryFalse = function(){
        $scope.a++; //creates an infinite digest loop
        console.log("ternary executed on false");   
    }    
    $scope.hover = function(){
        console.log("Hover");
    }
}

我还添加了一些权限:

try {
    if (Environment.getExternalStorageState()
            .equals(Environment.MEDIA_MOUNTED)) {
        System.out.println("can be read and write");
        File sdFile = android.os.Environment.getExternalStorageDirectory();

        //String path = sdFile.getPath() + File.separator + "DestPdf";
        String path = sdFile.getPath() + "/demos/file/tmp/test";
        File dirFile = new File(path);

        if (!dirFile.exists()) { // if file doesn't exist
            System.out.println("create file");
            dirFile.mkdir(); // create file
            System.out.println(dirFile.toString());
        }
    }
} catch (Exception ex) {
    ex.toString();
}

这是我打印出来的,我可以看到root / storage / sdcard / demos / file / tmp / test

<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

但我无法从Android设备监视器中找到该文件 enter image description here

我错过了什么步骤?任何帮助,将不胜感激 。提前谢谢。

3 个答案:

答案 0 :(得分:2)

你应该替换

dirFile.mkdir();

dirFile.mkdirs();

示例:

if (!dirFile.exists()) { // if file doesn't exist
        System.out.println(dirFile.mkdir());
        System.out.println(dirFile.mkdirs());

    }

将为第一个产生错误[并且不会创建目录],对于第二个将为true,并且您将创建/ demos / file / tmp / test

mkdirs()还在此File表示的路径中创建父目录。

mkdirs()的javadocs:

  

创建此抽象路径名所指定的目录,包括any   必要但不存在的父目录。请注意,如果这样   操作失败它可能已经成功创建了一些   必要的父目录。

mkdir()的javadocs:

  

创建此抽象路径名命名的目录。

希望能帮到你!

答案 1 :(得分:1)

几个月前我遇到了同样的问题。

在我的情况下文件就在那里,但是窗口看不到它(或者adb和windows explorer之间的集成)。

重置MOBILE是我找到的唯一解决方案......重置后,文件在Windows资源管理器中。

我建议您尝试使用cli命令查找文件:

adb shell ls sdcard/"your_path"                                                                                           

另外,尝试使用以下方法创建它:

.getAbsolutePath()

像这样:

File path = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "YOUR_FOLDER_NAME");

if(!path.exists()) 
{
    path.mkdirs();
} 
else 
{ 
    Log.d ("TAG","Path already exists");
}

希望有所帮助

答案 2 :(得分:1)

对于Android 6+,您需要添加代码以要求用户确认您在清单中询问的权限。

Google获取运行时权限。