繁体   English   中英

Android Studio:无法写入外部存储?

[英]Android Studio: Can't write to external storage?

我知道,这个问题已被问了一千次,但没有解决方案对我有用......我只想将数据保存到SD卡上的文件中。 但首先,这是我的代码:

private static final String TAG="Logmessage";

public void save(){
    String state=Environment.getExternalStorageState();
    if(Environment.MEDIA_MOUNTED.equals(state)){
        File dir=new File(Environment.getExternalStorageDirectory() + "/NewFolder");
        if(!dir.exists()){
            if (dir.mkdirs()){
                Log.i(TAG,"Dir made");
            }else{
                Log.i(TAG,"Error: Dir not made");
            }
        }else{
            Log.i(TAG,"Dir already exists");
        }
        File file=new File(dir,"file.txt");
        try {
            BufferedWriter bWriter = new BufferedWriter(new FileWriter(file));
            bWriter.write("Hello World!");
            bWriter.close();
        }catch (IOException e){
            Log.e("Exception","BufferedWriter");
        }
    }else{
        Log.i(TAG,"External Drive not available");
    }
}

当然我在清单文件中添加了<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ,但是当我运行应用程序时,日志消息总是: Logmessage: Dir not madeException: BufferedWriter 所以我想,清单文件中的条目没有“工作”,因为它甚至无法创建目录?

这段代码非常适合我:

String state = Environment.getExternalStorageState();
File mFileTemp;
if (Environment.MEDIA_MOUNTED.equals(state)) {
//this is like that 
//any folder name/you can add inner folders like that/your photo name122412414124.jpg
mFileTemp = new File(Environment.getExternalStorageDirectory()+File.separator+"any folder name"+File.separator+"you can add inner folders like that"
        , "your photo name"+System.currentTimeMillis()+".jpg");
mFileTemp.getParentFile().mkdirs();
 //then write file
}
else {
mFileTemp = new File(getFilesDir()+"any folder name"+
        File.separator+"myphotos")+File.separator+"profilephotos", "your photo name"+System.currentTimeMillis()+".jpg");
mFileTemp.getParentFile().mkdirs();
 //then write file
}

您可以使用File.separator而不是“/”

如果外部不可用,则此代码默认情况下会在内部存储中创建相同的文件夹

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM