将文件保存在外部存储器中

时间:2017-03-13 21:55:19

标签: android

我试图创建一个目录并将文件保存到目录中,我的程序返回该目录已创建,但我找不到使用USB端口从PC浏览的目录,或者使用ES文件浏览器。每次运行程序时程序也返回true(创建目录),如果它确实创建了它,它应该只在第一次返回true。另外,当我尝试在目录中创建一个文件时,它返回该文件不存在。在清单中,我正在为写入外部和内部存储设置用户权限。 请告诉我我做错了什么,为什么我的程序实际上没有创建文件夹(或文件)(注意tager文件夹路径是存储/模拟/ 0 / Documents / Saved_Receipts),我认为最终会/我的文件/ Saved_Receipts)

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

boolean success = false;
                String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).toString();
                File myDir = new File(root + "/Saved_Receipts");

                if (!myDir.exists()) {
                    success = myDir.mkdir();
                    textIncoming.append("creating folder");
                    }
                if (success) {
                    textIncoming.append("created folder");
                } else {
                    textIncoming.append("folder existed");
                }

                Random generator = new Random();
                int n = 10000;
                n = generator.nextInt(n);
                String fname = "DRcpt_.xml";
                File file = new File (myDir, fname);
                if (file.exists ()) {
                    textIncoming.append("file exists");
                }
                else{
                    textIncoming.append("file does not exist");
                }

1 个答案:

答案 0 :(得分:0)

您可能正在使用SDK(API)23或更高版本。如果是这种情况,则在清单中声明权限已经不够了。

您应该可以通过在代码中添加以下块来解决该问题:

if (Build.VERSION.SDK_INT >= 23) {
        if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
        }
        else {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        }
    }

请参阅:

Storage permission error in Marshmallow