zoukankan      html  css  js  c++  java
  • 转-Android 之 使用File类在SD卡中读取数据文件

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

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

            
         <!-- 向SD卡中的写入权限 --> 

    Java代码:  
    1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  

        
        小贴士: 
        在对SD卡进行读写的时候会用到的知识点: 
        Environment类的静态方法: 
        * getDataDirectory(); 获取android中的data目录; 
        * getExternalStorgeDirectory(); 获取到外部存储的目录一般指SD卡; 
        * getDownloadCacheDirectory(); 获取到下载的缓存目录; 
        * getExternalStorageState(); 获取外部设置的当前状态,sd卡 
        
        android对于外部的设置状态,我们比较常用的应该是MEDIA_MOUNTED(sd卡存在并且可以进行 
        读写 ) 
        * getRootDirectory(); 获取到Android Root路径; 
        * isExternalStorageEmulated(); 返回Boolean值判断外部设置是否有效; 
        * isExternalStorageRemovable(); 判断外部设置是否可以移除; 
        
        Android中外部设置的状态情况如下: 
        * MEDIA_MOUNTED sd卡中可以进行读写; 
        * MEDIA_MOUNTED_READ_ONLY sd卡 存在,只可以进行读的操作 
        .......................................................[/b][/color]    
    案例:效果实现,点击实现将数据写入到SD卡中,代码如下: 
    java代码: 

    1. /* 将文件数据写入sdcard中,保存数据 */  
    2. ublic void writeDataToSD(){  
    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. }  

    读取SD卡中的文件: 
    /* 读取数据 */ 

    Java代码:  
      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.     }  
      27. }  
  • 相关阅读:
    mysql导入导出数据
    Linux符号连接的层数过多
    win10下docker安装和配置镜像仓库
    PHP资源列表(转)
    php中正则案例分析
    基于CSS3自定义美化复选框Checkbox组合
    基于HTML5 Canvas粒子效果文字动画特效
    基于jQuery商品分类选择提交表单代码
    基于jquery右侧悬浮加入购物车代码
    基于jquery带时间轴的图片轮播切换代码
  • 原文地址:https://www.cnblogs.com/awkflf11/p/4613509.html
Copyright © 2011-2022 走看看