把文件存储到sdcard中

来源:互联网 发布:网络存储服务器 编辑:程序博客网 时间:2024/04/30 04:43

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();

}

}