Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 324|回复: 0

[默认分类] [转]Android读写文件

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-7-13 13:11:22 | 显示全部楼层 |阅读模式
    本文转自:http://blog.sina.com.cn/s/blog_4d25c9870100qpax.html

    一、       从resource中的raw文件夹中获取文件并读取数据(资源文件只能读不能写)
    String res = "";
    try{
    InputStream in = getResources().openRawResource(R.raw.bbi);
    //在\Test\res\raw\bbi.txt,
       int length = in.available();      
       byte [] buffer = new byte[length];        
       in.read(buffer);         
       //res = EncodingUtils.getString(buffer, "UTF-8");
       //res = EncodingUtils.getString(buffer, "UNICODE");
       res = EncodingUtils.getString(buffer, "BIG5");
       //依bbi.txt的编码类型选择合适的编码,如果不调整会乱码
       in.close();            
       }catch(Exception e){
          e.printStackTrace();         
       }
    myTextView.setText(res);//把得到的内容显示在TextView上

    二、       从asset中获取文件并读取数据(资源文件只能读不能写)
    String fileName = "yan.txt"; //文件名字
    String res="";
    try{
       InputStream in = getResources().getAssets().open(fileName);
       // \Test\assets\yan.txt这里有这样的文件存在
       int length = in.available();         
    byte [] buffer = new byte[length];        
    in.read(buffer);            
    res = EncodingUtils.getString(buffer, "UTF-8");     
    }catch(Exception e){
          e.printStackTrace();         
       }

    三、       从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:/

    String fileName = "/sdcard/Y.txt";
    //也可以用String fileName = "mnt/sdcard/Y.txt";
    String res="";     
    try{
    FileInputStream fin = new FileInputStream(fileName);
    //FileInputStream fin = openFileInput(fileName);  
    //用这个就不行了,必须用FileInputStream
        int length = fin.available();
        byte [] buffer = new byte[length];
        fin.read(buffer);     
        res = EncodingUtils.getString(buffer, "UTF-8");
        fin.close();     
        }catch(Exception e){
               e.printStackTrace();
    }
    myTextView.setText(res);

    四、       写文件, 一般写在\data\data\com.test\files\里面,打开DDMS查看file explorer是可以看到仿真器文件存放目录的结构的
       String fileName = "TEST.txt";
       String message = "FFFFFFF11111FFFFF" ;
    writeFileData(fileName, message);
      
       public voidwriteFileData(String fileName,String message){
           try{
            FileOutputStream fout =openFileOutput(fileName, MODE_PRIVATE);
            byte [] bytes = message.getBytes();
            fout.write(bytes);
             fout.close();
            }
           catch(Exception e){
            e.printStackTrace();
           }
       }   

    五、       写, 读data/data/目录(相当AP工作目录)上的文件,用openFileOutput
       //写文件在./data/data/com.tt/files/下面
       public voidwriteFileData(String fileName,String message){
           try{
            FileOutputStream fout =openFileOutput(fileName, MODE_PRIVATE);
            byte [] bytes = message.getBytes();
            fout.write(bytes);
             fout.close();
            }
           catch(Exception e){
            e.printStackTrace();
           }
       }
    //-------------------------------------------------------
    //读文件在./data/data/com.tt/files/下面
       public String readFileData(String fileName){
            String res="";
            try{
             FileInputStream fin = openFileInput(fileName);
             int length = fin.available();
             byte [] buffer = new byte[length];
             fin.read(buffer);     
             res = EncodingUtils.getString(buffer, "UTF-8");
             fin.close();     
            }
            catch(Exception e){
             e.printStackTrace();
            }
            return res;
        }   
    六、       写, 读sdcard目录上的文件,要用FileOutputStream, 不能用openFileOutput

        //写在/mnt/sdcard/目录下面的文件
       public voidwriteFileSdcard(String fileName,String message){
           try{
            //FileOutputStream fout = openFileOutput(fileName, MODE_PRIVATE);
           FileOutputStream fout = newFileOutputStream(fileName);
            byte [] bytes = message.getBytes();
            fout.write(bytes);
             fout.close();
            }
           catch(Exception e){
            e.printStackTrace();
           }
       }
      
       //读在/mnt/sdcard/目录下面的文件
       public String readFileSdcard(String fileName){
            String res="";
            try{
             FileInputStream fin = new FileInputStream(fileName);
             int length = fin.available();
             byte [] buffer = new byte[length];
             fin.read(buffer);     
             res = EncodingUtils.getString(buffer, "UTF-8");
             fin.close();     
            }
            catch(Exception e){
             e.printStackTrace();
            }
            return res;
       }

    注: openFileOutput是在raw里编译过的,FileOutputStream是任何文件都可以

    参考:http://dev.10086.cn/cmdn/wiki/index.php?doc-view-6017.HTML
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-25 12:48 , Processed in 0.381856 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表