Android 之 使用File类在SD卡中读取数据文件

Android 之 使用File类在SD卡中读取数据文件


一、File 类读写文件 : 

如果需要在程序中使用sdcard进行数据的存储,那么需要在AndroidMainfset.xml文件中 
进行权限的配置: 

  1. <!-- 在sd中创建和删除文件的权限 -->  
  2. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />  

  1. <!-- 向SD卡中的写入权限 -->   
  2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  

小贴士: 
    在对SD卡进行读写的时候会用到的知识点: 
    Environment类的静态方法: 
    * getDataDirectory(); 获取android中的data目录; 
    * getExternalStorgeDirectory(); 获取到外部存储的目录一般指SD卡; 
    * getDownloadCacheDirectory(); 获取到下载的缓存目录; 
    * getExternalStorageState(); 获取外部设置的当前状态,sd卡 
    

Android 中外部存储的状态情况如下,我们比较常用的应该是 MEDIA_MOUNTED(sd卡存在并且可以进行读写): 
    * MEDIA_MOUNTED                           sd卡中可以进行读写; 
    * MEDIA_MOUNTED_READ_ONLY   sd卡 存在,只可以进行读的操作 

Android 对于外部存储的状态判断: 
    * getRootDirectory();                      获取到 Android Root 路径; 
    * isExternalStorageEmulated();   判断外部存储是否有效; 
    * isExternalStorageRemovable();   判断外部存储是否可以移除; 


二、案例:

1、点击实现将数据写入到SD卡中

代码如下:

  1. public void writeDataToSD(){  
  2.       
  3.     try{  
  4.         /* 获取File对象,确定数据文件的信息 */  
  5.         //File file  = new File(Environment.getExternalStorageDirectory()+"/f.txt");  
  6.         File file  = new File(Environment.getExternalStorageDirectory(),"f.txt");  
  7.   
  8.         /* 判断sd的外部设置状态是否可以读写 */  
  9.         if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){  
  10.   
  11.             /* 流的对象 *//*  */  
  12.             FileOutputStream fos = new FileOutputStream(file);  
  13.   
  14.             /* 需要写入的数据 */  
  15.             String message = "天气不是很好";  
  16.   
  17.             /* 将字符串转换成字节数组 */  
  18.             byte[] buffer = message.getBytes();  
  19.   
  20.             /* 开始写入数据 */  
  21.             fos.write(buffer);  
  22.   
  23.             /* 关闭流的使用 */  
  24.             fos.close();  
  25.             Toast.makeText(MainActivity.this"文件写入成功"1000).show();  
  26.         }  
  27.   
  28.     }catch(Exception ex){  
  29.         Toast.makeText(MainActivity.this"文件写入失败"1000).show();  
  30.     }  
  31. }  

2、读取SD卡中的文件:

  1. public void readDataFromSD(){  
  2.     try{  
  3.   
  4.         /* 创建File对象,确定需要读取文件的信息 */  
  5.         File file = new File(Environment.getExternalStorageDirectory(),"f.txt");  
  6.   
  7.         /* FileInputSteam 输入流的对象, */  
  8.         FileInputStream fis = new FileInputStream(file);  
  9.   
  10.         /* 准备一个字节数组用户装即将读取的数据 */  
  11.         byte[] buffer = new byte[fis.available()];  
  12.   
  13.         /* 开始进行文件的读取 */  
  14.         fis.read(buffer);  
  15.   
  16.         /* 关闭流  */  
  17.         fis.close();  
  18.   
  19.         /* 将字节数组转换成字符创, 并转换编码的格式 */  
  20.         String res = EncodingUtils.getString(buffer, "UTF-8");  
  21.   
  22.         Toast.makeText(MainActivity.this"文件读取成功,您读取的数据为:"+res, 1000).show();  
  23.   
  24.     }catch(Exception ex){  
  25.         Toast.makeText(MainActivity.this"文件读取失败!"1000).show();  
  26.     }  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值