SDCard中的文件被外面的应用读写
在程序中访问SDCard,你需要申请访问SDCard的权限。
在AndroidManifest.xml中加入访问SDCard的权限如下:
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
要往SDCard存放文件,程序必须先判断手机是否装有SDCard,并且可以进行读写。
注意:访问SDCard必须在AndroidManifest.xml中加入访问SDCard的权限
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录
File saveFile = new File(sdCardDir, “itcast.txt”);
FileOutputStream outStream = new FileOutputStream(saveFile);
outStream.write("传智播客".getBytes());
outStream.close();
}
Environment.getExternalStorageState()方法用于获取SDCard的状态,如果手机装有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED。
Environment.getExternalStorageDirectory()方法用于获取SDCard的目录,当然要获取SDCard的目录,你也可以这样写:
File sdCardDir = new File("/sdcard"); //获取SDCard目录
File saveFile = new File(sdCardDir, "itcast.txt");
//上面两句代码可以合成一句: File saveFile = new File("/sdcard/itcast.txt");
FileOutputStream outStream = new FileOutputStream(saveFile);
outStream.write(" 写入SDCard".getBytes());
outStream.close();
例子:
给sdcard写入文件
public void saveAndWrite(String name,String content) throws IOException{
if(!name.endsWith(".txt")){
name=name+".txt";
}
FileOutputStream putStream = context.openFileOutput(name, Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);
putStream.write(name.getBytes());
putStream.close();
}
@SuppressLint("WorldReadableFiles")
public void saveAtSDCard(String name ,String content) throws IOException{
if(!name.endsWith(".txt")){
name=name+".txt";
}
File file = new File(Environment.getExternalStorageDirectory(), name);
FileOutputStream outStream = new FileOutputStream(file);//context.openFileOutput(name, Context.MODE_PRIVATE)是写入到系统默认的位置
outStream.write(content.getBytes());
outStream.close();
}
调用上面方法的代码:
public void onClick(View v) {
String name = ((EditText)findViewById(R.id.name)).getText().toString();
String content = ((EditText)findViewById(R.id.content)).getText().toString();
FileService file = new FileService(MainActivity.this);
try {
//file.save(name, content);
//file.saveAndWrite(name, content);
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
file.saveAtSDCard(name, content);
Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity.this, "没有找到sdcard", Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
// TODO Auto-generated catch block
Toast.makeText(MainActivity.this, "保存失败", Toast.LENGTH_LONG).show();
}
}