Android—SDCard数据存取&Environment简介

1:Environment简介:

Environment是android.os包下的一个类,谷歌官方文旦的解释为:Provides access to environment variables(提供访问环境的变量),由此可看出,该类是用于程序访问SDCard的一个设备访问类

Environment 常量 构造方法 方法如下:

 

解析:比如字段:DIRECTORY_PICTURES 是返回SDcard中Pictures目录的名字 其中的SDCardPicturesName==“Pictures”;

 

String SDCardPicturesName=Environment.DIRECTORY_PICTURES;

        比如构造方法:getExternalStorageDirectory();返回返回的主要外部存储目录。也就是SDCard的根目录了。如下图所示:

 

 

2:通过一个简单的android projec项目使用Environment对SDCard文件进行读写穿件文件目录等的操作

        首先想要操作存储卡数据需要获取权限,我们在AndroidMainfest.xml中进行配置如下:

    <!-- 在SDCard中创建与删除文件权限 -->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <!-- 往SDCard写入数据权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

        测试应用界面如下。不做解释,想比一看就能明白用意:

 

   示例代码如下:

  1 package activity.cyq.helloandroidstudio;
  2 
  3 import android.os.Environment;
  4 import android.support.v7.app.AppCompatActivity;
  5 import android.os.Bundle;
  6 import android.view.View;
  7 import android.widget.EditText;
  8 import android.widget.TextView;
  9 import android.widget.Toast;
 10 
 11 import java.io.BufferedReader;
 12 import java.io.File;
 13 import java.io.FileInputStream;
 14 import java.io.FileNotFoundException;
 15 import java.io.FileOutputStream;
 16 import java.io.IOException;
 17 import java.io.InputStreamReader;
 18 import java.io.OutputStreamWriter;
 19 
 20 public class MainActivity extends AppCompatActivity {
 21     private EditText writeEdit;
 22     private TextView showData;
 23     private final String FILE_NAME = "MyCreate.txt";
 24     File sdcard = Environment.getExternalStoragePublicDirectory("txt");//定义主要外部存储目录。
 25     String file = Environment.getExternalStorageDirectory() + "/Pictures";
 26     File myfile = new File(sdcard, FILE_NAME);
 27     File testFile = new File(file);
 28 
 29     @Override
 30     protected void onCreate(Bundle savedInstanceState) {
 31         super.onCreate(savedInstanceState);
 32         setContentView(R.layout.activity_main);
 33 
 34         writeEdit = (EditText) findViewById(R.id.write_edit);
 35         showData = (TextView) findViewById(R.id.show_text);
 36 
 37         /*写入数据到SDCard文件*/
 38         findViewById(R.id.write_btn).setOnClickListener(new View.OnClickListener() {
 39             @Override
 40             public void onClick(View v) {
 41                 if (!sdcard.exists()) {
 42                     Toast.makeText(MainActivity.this, "该设备SDCard不存在", Toast.LENGTH_SHORT).show(); //判断设备是否存在sdcard
 43                     return;
 44                 }
 45                 if (!myfile.exists()) {  /*文件不存在则穿件文件*/
 46                     try {
 47                         myfile.createNewFile();
 48                     } catch (IOException e) {
 49                         e.printStackTrace();
 50                     }
 51                 }
 52                 /*文件写入操作*/
 53                 try {
 54                     FileOutputStream fos = new FileOutputStream(myfile);
 55                     OutputStreamWriter opw = new OutputStreamWriter(fos);
 56                     opw.write(writeEdit.getText().toString());
 57                     opw.flush();
 58                     opw.close();
 59                     fos.close();
 60                     Toast.makeText(MainActivity.this, "数据写入成功", Toast.LENGTH_SHORT).show();
 61                 } catch (FileNotFoundException e) {
 62                     e.printStackTrace();
 63                 } catch (IOException e) {
 64                     e.printStackTrace();
 65                 }
 66 
 67             }
 68         });
 69 
 70         /*读取SDCard中的文件数据*/
 71         findViewById(R.id.read_btn).setOnClickListener(new View.OnClickListener() {
 72             @Override
 73             public void onClick(View v) {
 74                 if (!sdcard.exists()) {
 75                     Toast.makeText(MainActivity.this, "该设备SDCard不存在", Toast.LENGTH_SHORT).show(); //判断设备是否存在sdcard
 76                     return;
 77                 }
 78                 if (!myfile.exists()) {
 79                     try {
 80                         myfile.createNewFile();
 81                     } catch (IOException e) {
 82                         e.printStackTrace();
 83                     }
 84                 }
 85                 try {
 86                     FileInputStream fis = new FileInputStream(myfile);
 87                     InputStreamReader isr = new InputStreamReader(fis);
 88                     BufferedReader br = new BufferedReader(isr);
 89                     StringBuilder strBuilder = new StringBuilder();
 90                     String line = "";
 91                     while ((line = br.readLine()) != null) {
 92                         strBuilder.append(line);
 93                     }
 94                     br.close();
 95                     isr.close();
 96                     fis.close();
 97                     Toast.makeText(MainActivity.this, "数据读取成功", Toast.LENGTH_SHORT).show();
 98                     showData.setText(strBuilder);
 99                 } catch (FileNotFoundException e) {
100                     e.printStackTrace();
101                 } catch (IOException e) {
102                     e.printStackTrace();
103                 }
104 
105             }
106         });
107 
108         findViewById(R.id.text_btn).setOnClickListener(new View.OnClickListener() {
109             @Override
110             public void onClick(View v) {
111                 if (testFile.exists()) {
112                     Toast.makeText(MainActivity.this, "Pictures文件存在", Toast.LENGTH_SHORT).show();
113                     try {
114                         new File(testFile + "/testNew.txt").createNewFile();/*调用File的构造方法在Pictures目录下创建一个文件*/
115                     } catch (IOException e) {
116                         e.printStackTrace();
117                     }
118                 } else {
119                     Toast.makeText(MainActivity.this, "Pictures文件不存在", Toast.LENGTH_SHORT).show();
120                 }
121             }
122         });
123     }
124 }


补充:File类的四个构造方法:

File(File dir, String name);

File(String path) ;

File(String dirPath, String name;

File(URI uri);

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2015-08-01 22:11  木头同学  阅读(1866)  评论(0编辑  收藏  举报