[英]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 made
和Exception: 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.