Android的文件操作(SD卡)


在上次的 中写过直接操作手机自带存储器的程序,这次就接着上次的协议下对sd卡的文件操作。与自带存储不同的是使用sd卡需要用户授权

  1. <uses-permission Android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  
  2. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>  
千万要记住不能写颠倒了,不然看不到结果

之后写个方法来保存文件

  1. public void saveToSD(String filename,String content) throws Exception{  
  2.         //getExternalStorageDirectory()可以取得sd卡得路径   
  3.         File f=new File(Environment.getExternalStorageDirectory(),filename);  
  4.         FileOutputStream out2=new FileOutputStream(f);  
  5.         out2.write(content.getBytes());  
  6.         out2.close();  
  7.     }  
最后就可以在控制层使用这个方法了,需要对SD卡得状态作判断,取得状态可以使用Environment.getExternalStorageState(),如果可用才能保存文件,反之就提示“sd卡不存在或不可用”
  1. package org.lxh.file;  
  2.   
  3. import org.lxh.service.FileService;  
  4.   
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.os.Environment;  
  8. import android.util.Log;  
  9. import android.view.View;  
  10. import android.widget.Button;  
  11. import android.widget.EditText;  
  12. import android.widget.Toast;  
  13.   
  14. public class FileActivity extends Activity {  
  15.     private FileService service;  
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.main);  
  19.           
  20.         service=new FileService(this);  
  21.         Button button=(Button)findViewById(R.id.button);  
  22.         button.setOnClickListener(new View.OnClickListener() {    
  23.               
  24.             public void onClick(View v) {  
  25.                 EditText filename=(EditText)findViewById(R.id.filename);  
  26.                 EditText content=(EditText)findViewById(R.id.content);  
  27.                 try {  
  28.                     if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){  
  29.                         service.saveToSD(filename.getText().toString(), content.getText().toString());  
  30.                         Toast.makeText(FileActivity.this, R.string.success, 1).show();  
  31.                     }else{  
  32.                         Toast.makeText(FileActivity.this,  R.string.sd, 1).show();  
  33.                     }  
  34.                     //service.saveFile(filename.getText().toString(), content.getText().toString());   
  35.                       
  36.                 } catch (Exception e) {  
  37.                     Toast.makeText(FileActivity.this, R.string.failure, 1).show();  
  38.                     Log.e("FileActivity", e.getMessage());  
  39.                 }  
  40.             }  
  41.         });  
  42.           
  43.     }  
  44. }  
下面 把strings.xml也贴出来
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.     <string name="hello">Hello World, FileActivity!</string>  
  4.     <string name="app_name">文件的读取</string>  
  5.     <string name="filename">输入文件名称</string>  
  6.     <string name="content">输入文件内容</string>  
  7.     <string name="button">保存</string>  
  8.     <string name="success">文件保存成功</string>  
  9.     <string name="failure">文件保存失败</string>  
  10.     <string name="sd">sd卡不存在或不可用</string>  
  11. </resources>  
到这里就可以对SD卡进行操作了,这次的东西比较少。有问题也可以给我留言。

相关内容