妈蛋啊,真的是很恶心啊!!!实习生写了个练手的程序,但是怎么也不能保存文件,我为了这个问题纠结了快10多天啊!!!!!!!!!!!!!!!!!!!!!!!
我必须要写出来吐槽一下!!!!!
SD卡是什么东西,你肯定知道的,对不对,我就不解释了~~~~
写了一个程序,很简单,就是创建一个文件,将一些内容存储到SK卡之中。
首先要申请权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在存入手机之中和存入SD卡之中的写入方法是有区别的
存入手机之中
public void save(String filename, String content) throws Exception {
FileOutputStream outStream = context.openFileOutput(filename, context.MODE_PRIVATE);
outStream.write(content.getBytes());
outStream.close();
}
存入SD卡之中
public void saveToSdCard(String filename, String content) throws Exception{
File file = new File(Environment.getExternalStorageDirectory(),filename);
String sdpath = Environment.getExternalStorageDirectory().toString();
Log.i("sdsdsdsd", sdpath);
FileOutputStream outStream = new FileOutputStream(file);
outStream.write(content.getBytes());
outStream.close();
}
File file = new File(Environment.getExternalStorageDirectory(),filename);
中的Environment.getExternalStorageDirectory(),这个因为每个版本的安卓SD卡存储位置不同,所以不能直接写定,从而用这个方法。为了方便的找到写入的文件位置,所以用Log.i(,)输出了存储的位置。
在调用这个方法的时候,要优先判断SD卡是否写保护了,以及是否存在
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
一切都很正常对不对?没有发现什么错误对不对?但是为什呢在存储的时候就是存储不进去呢!?!?!?!?!?!我一直纠结了40多分钟!!!!!!
最后我发现,在创建AVD的时候没有创建SD卡区域。我日啊!!!!!!