实现Android读写文件

一、        resource 中的 raw 文件夹中获取文件并读取数据(资源文件只能读不能写)

  1. String res = "";   
  2.   
  3. try{   
  4.   
  5. InputStream in = getResources().openRawResource(R.raw.bbi);   
  6.   
  7. //在\Test\res\raw\bbi.txt,  
  8.   
  9.    int length = in.available();         
  10.   
  11.    byte [] buffer = new byte[length];          
  12.   
  13.    in.read(buffer);           
  14.   
  15.    //res = EncodingUtils.getString(buffer, "UTF-8");  
  16.   
  17.    //res = EncodingUtils.getString(buffer, "UNICODE");   
  18.   
  19.    res = EncodingUtils.getString(buffer, "BIG5");   
  20.   
  21.    //依bbi.txt的编码类型选择合适的编码,如果不调整会乱码  
  22.   
  23.    in.close();              
  24.   
  25.    }catch(Exception e){   
  26.   
  27.       e.printStackTrace();           
  28.   
  29.    }   
  30.   
  31. myTextView.setText(res);//把得到的内容显示在TextView上  
  32.   
  33.    
  34.   
  35. 二、       从asset中获取文件并读取数据(资源文件只能读不能写)  
  36.   
  37. String fileName = "yan.txt"; //文件名字  
  38.   
  39. String res="";   
  40.   
  41. try{   
  42.   
  43.    InputStream in = getResources().getAssets().open(fileName);  
  44.   
  45.    // \Test\assets\yan.txt这里有这样的文件存在  
  46.   
  47.    int length = in.available();           
  48.   
  49. byte [] buffer = new byte[length];          
  50.   
  51. in.read(buffer);              
  52.   
  53. res = EncodingUtils.getString(buffer, "UTF-8");       
  54.   
  55. }catch(Exception e){   
  56.   
  57.       e.printStackTrace();           
  58.   
  59.    }  
  60.   
  61.    
  62.   
  63. 三、       从sdcard中去读文件,首先要把文件通过\android-sdk-windows\tools\adb.exe把本地计算机上的文件copy到sdcard上去,adb.exe push e:/Y.txt /sdcard/, 不可以用adb.exe push e:\Y.txt \sdcard\ 同样: 把仿真器上的文件copy到本地计算机上用: adb pull ./data/data/com.tt/files/Test.txt e:/  
  64.   
  65.    
  66.   
  67. String fileName = "/sdcard/Y.txt";  
  68.   
  69. //也可以用String fileName = "mnt/sdcard/Y.txt";  
  70.   
  71. String res="";       
  72.   
  73. try{   
  74.   
  75. FileInputStream fin = new FileInputStream(fileName);  
  76.   
  77. //FileInputStream fin = openFileInput(fileName);    
  78.   
  79. //用这个就不行了,必须用FileInputStream  
  80.   
  81.     int length = fin.available();   
  82.   
  83.     byte [] buffer = new byte[length];   
  84.   
  85.     fin.read(buffer);       
  86.   
  87.     res = EncodingUtils.getString(buffer, "UTF-8");   
  88.   
  89.     fin.close();       
  90.   
  91.     }catch(Exception e){   
  92.   
  93.            e.printStackTrace();   
  94.   
  95. }   
  96.   
  97. myTextView.setText(res);  
  98.   
  99.    
  100.   
  101. 四、       写文件, 一般写在\data\data\com.test\files\里面,打开DDMS查看file explorer是可以看到仿真器文件存放目录的结构的  
  102.   
  103.    String fileName = "TEST.txt";  
  104.   
  105.    String message = "FFFFFFF11111FFFFF" ;  
  106.   
  107. writeFileData(fileName, message);  
  108.   
  109.     
  110.   
  111.    public voidwriteFileData(String fileName,String message){   
  112.   
  113.        try{   
  114.   
  115.         FileOutputStream fout =openFileOutput(fileName, MODE_PRIVATE);  
  116.   
  117.         byte [] bytes = message.getBytes();   
  118.   
  119.         fout.write(bytes);   
  120.   
  121.          fout.close();   
  122.   
  123.         }   
  124.   
  125.        catch(Exception e){   
  126.   
  127.         e.printStackTrace();   
  128.   
  129.        }   
  130.   
  131.    }      
  132.   
  133.    
  134.   
  135. 五、       写, 读data/data/目录(相当AP工作目录)上的文件,用openFileOutput  
  136.   
  137.    //写文件在./data/data/com.tt/files/下面  
  138.   
  139.    public voidwriteFileData(String fileName,String message){   
  140.   
  141.        try{   
  142.   
  143.         FileOutputStream fout =openFileOutput(fileName, MODE_PRIVATE);  
  144.   
  145.         byte [] bytes = message.getBytes();   
  146.   
  147.         fout.write(bytes);   
  148.   
  149.          fout.close();   
  150.   
  151.         }   
  152.   
  153.        catch(Exception e){   
  154.   
  155.         e.printStackTrace();   
  156.   
  157.        }   
  158.   
  159.    }  
  160.   
  161. //-------------------------------------------------------  
  162.   
  163. //读文件在./data/data/com.tt/files/下面  
  164.   
  165.    public String readFileData(String fileName){   
  166.   
  167.         String res="";   
  168.   
  169.         try{   
  170.   
  171.          FileInputStream fin = openFileInput(fileName);   
  172.   
  173.          int length = fin.available();   
  174.   
  175.          byte [] buffer = new byte[length];   
  176.   
  177.          fin.read(buffer);       
  178.   
  179.          res = EncodingUtils.getString(buffer, "UTF-8");   
  180.   
  181.          fin.close();       
  182.   
  183.         }   
  184.   
  185.         catch(Exception e){   
  186.   
  187.          e.printStackTrace();   
  188.   
  189.         }   
  190.   
  191.         return res;   
  192.   
  193.     }     
  194.   
  195. 六、       写, 读sdcard目录上的文件,要用FileOutputStream, 不能用openFileOutput  
  196.   
  197.    
  198.   
  199.     //写在/mnt/sdcard/目录下面的文件  
  200.   
  201.    public voidwriteFileSdcard(String fileName,String message){   
  202.   
  203.        try{   
  204.   
  205.         //FileOutputStream fout = openFileOutput(fileName, MODE_PRIVATE);  
  206.   
  207.        FileOutputStream fout = newFileOutputStream(fileName);  
  208.   
  209.         byte [] bytes = message.getBytes();   
  210.   
  211.         fout.write(bytes);   
  212.   
  213.          fout.close();   
  214.   
  215.         }   
  216.   
  217.        catch(Exception e){   
  218.   
  219.         e.printStackTrace();   
  220.   
  221.        }   
  222.   
  223.    }  
  224.   
  225.     
  226.   
  227.    //读在/mnt/sdcard/目录下面的文件  
  228.   
  229.    public String readFileSdcard(String fileName){  
  230.   
  231.         String res="";   
  232.   
  233.         try{   
  234.   
  235.          FileInputStream fin = new FileInputStream(fileName);   
  236.   
  237.          int length = fin.available();   
  238.   
  239.          byte [] buffer = new byte[length];   
  240.   
  241.          fin.read(buffer);       
  242.   
  243.          res = EncodingUtils.getString(buffer, "UTF-8");   
  244.   
  245.          fin.close();       
  246.   
  247.         }   
  248.   
  249.         catch(Exception e){   
  250.   
  251.          e.printStackTrace();   
  252.   
  253.         }   
  254.   
  255.         return res;   
  256.   
  257.    } 
  258. 来自:http://blog.csdn.net/wwwandroidcom
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值