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

  • 相关阅读:
    Hibernate save, saveOrUpdate, persist, merge, update 区别
    Eclipse下maven使用嵌入式(Embedded)Neo4j创建Hello World项目
    Neo4j批量插入(Batch Insertion)
    嵌入式(Embedded)Neo4j数据库访问方法
    Neo4j 查询已经创建的索引与约束
    Neo4j 两种索引Legacy Index与Schema Index区别
    spring data jpa hibernate jpa 三者之间的关系
    maven web project打包为war包,目录结构的变化
    创建一个maven web project
    Linux下部署solrCloud
  • 原文地址:https://www.cnblogs.com/awkflf11/p/5094056.html
Copyright © 2011-2022 走看看