zoukankan      html  css  js  c++  java
  • SDcard进行文件的读取

    平时我们需要在手机上面存储想音频,视频等等的大文件,以前学过使用File进行存储(使用File操作进行存储);由于考虑到手机本身的存储空间小,这时候我们需要把文件存储在SDcard中,今天自己也学习了一下在android进行sdcard的存储使用方法;

        首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置:

      在AndroidManifest.xml中加入访问SDCard的权限如下:

      <!-- 在SDCard中创建与删除文件权限 -->

      <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

     <!-- 往SDCard写入数据权限 -->

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

         

        接着我们在使用SDcard进行读写的时候 会用到Environment类下面的几个静态方法  

       1: getDataDirectory()  获取到Androi中的data数据目录

       2:getDownloadCacheDirectory()  获取到下载的缓存目录

       3:getExternalStorageDirectory()  获取到外部存储的目录 一般指SDcard

       4:getExternalStorageState() 获取外部设置的当前状态 一般指SDcard, 

             android系统中对于外部设置的状态,我们比较常用的应该是 MEDIA_MOUNTED(SDcard存在并且可以进行读写)  MEDIA_MOUNTED_READ_ONLY (SDcard存在,只可以进行读操作)  当然还有其他的一些状态,可以在文档中进行查找到  

        5:getRootDirectory()  获取到Android Root路径

       6:isExternalStorageEmulated() 返回Boolean值判断外部设置是否有效

       7:isExternalStorageRemovable()  返回Boolean值,判断外部设置是否可以移除

       【注】上面进行红色标记的方法,我们会常用

    [java] view plaincopy
     
    1. <span style="color:#ff0000;">Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)  代码中这句:我们对SDcard的状态进行判断,</span>  

         下面看实现SDCard进行文件读写操作的Demo:

         

    [java] view plaincopy
     
    1. package com.jiangqq.sdcard;  
    2.   
    3. import java.io.File;  
    4. import java.io.FileInputStream;  
    5. import java.io.FileOutputStream;  
    6.   
    7. import android.app.Activity;  
    8. import android.content.Context;  
    9. import android.os.Bundle;  
    10. import android.os.Environment;  
    11. import android.view.View;  
    12. import android.view.View.OnClickListener;  
    13. import android.widget.Button;  
    14. import android.widget.EditText;  
    15. import android.widget.Toast;  
    16.   
    17. public class SDcardActivity extends Activity {  
    18.     private Button bt1, bt2;  
    19.     private EditText et1, et2;  
    20.   
    21.     private static final String FILENAME = "temp_file.txt";  
    22.   
    23.     @Override  
    24.     public void onCreate(Bundle savedInstanceState) {  
    25.         super.onCreate(savedInstanceState);  
    26.         setContentView(R.layout.main);  
    27.         bt1 = (Button) this.findViewById(R.id.bt1);  
    28.         bt2 = (Button) this.findViewById(R.id.bt2);  
    29.         et1 = (EditText) this.findViewById(R.id.et1);  
    30.         et2 = (EditText) this.findViewById(R.id.et2);  
    31.         bt1.setOnClickListener(new MySetOnClickListener());  
    32.         bt2.setOnClickListener(new MySetOnClickListener());  
    33.     }  
    34.   
    35.     private class MySetOnClickListener implements OnClickListener {  
    36.   
    37.         @Override  
    38.         public void onClick(View v) {  
    39.             File file = new File(Environment.getExternalStorageDirectory(),  
    40.                     FILENAME);  
    41.             switch (v.getId()) {  
    42.             case R.id.bt1:// 使用SDcard写操作  
    43.                 if (Environment.getExternalStorageState().equals(  
    44.                         Environment.MEDIA_MOUNTED)) {  
    45.   
    46.                     try {  
    47.                         FileOutputStream fos = new FileOutputStream(file);  
    48.                         fos.write(et1.getText().toString().getBytes());  
    49.                         fos.close();  
    50.                         Toast.makeText(SDcardActivity.this, "写入文件成功",  
    51.                                 Toast.LENGTH_LONG).show();  
    52.                     } catch (Exception e) {  
    53.                         Toast.makeText(SDcardActivity.this, "写入文件失败",  
    54.                                 Toast.LENGTH_SHORT).show();  
    55.                     }  
    56.                 } else {  
    57.                     // 此时SDcard不存在或者不能进行读写操作的  
    58.                     Toast.makeText(SDcardActivity.this,  
    59.                             "此时SDcard不存在或者不能进行读写操作", Toast.LENGTH_SHORT).show();  
    60.                 }  
    61.                 break;  
    62.   
    63.             case R.id.bt2:// 使用SDcard读操作  
    64.                 if (Environment.getExternalStorageState().equals(  
    65.                         Environment.MEDIA_MOUNTED)) {  
    66.                     try {  
    67.                         FileInputStream inputStream = new FileInputStream(file);  
    68.                         byte[] b = new byte[inputStream.available()];  
    69.                         inputStream.read(b);  
    70.                         et2.setText(new String(b));  
    71.                         Toast.makeText(SDcardActivity.this, "读取文件成功",  
    72.                                 Toast.LENGTH_LONG).show();  
    73.                     } catch (Exception e) {  
    74.                         Toast.makeText(SDcardActivity.this, "读取失败",  
    75.                                 Toast.LENGTH_SHORT).show();  
    76.                     }  
    77.                 } else {  
    78.                     // 此时SDcard不存在或者不能进行读写操作的  
    79.                     Toast.makeText(SDcardActivity.this,  
    80.                             "此时SDcard不存在或者不能进行读写操作", Toast.LENGTH_SHORT).show();  
    81.                 }  
    82.                 break;  
    83.             }  
    84.   
    85.         }  
    86.   
    87.     }  
    88.   
    89. }  

    下面截图效果:

      

        Demo下载链接:http://download.csdn.net/detail/jiangqq781931404/4017475

  • 相关阅读:
    第六周例行报告
    第五周每周例行报告
    第三、四周例行报告
    PSP总结报告
    获奖感言
    20181204-1 每周例行报告
    20181127-2 每周例行报告
    软件工程原则的应用实例分析
    20181120-1 每周例行报告
    20181113-2 每周例行报告
  • 原文地址:https://www.cnblogs.com/awkflf11/p/5094056.html
Copyright © 2011-2022 走看看