Android学习——文件存储

 

在Andriod开发中,文件存储和Java的文件存储类似。但需要注意的是,为了防止产生碎片垃圾,在创建文件时,要尽量使用系统给出的函数进行创建,这样当APP被卸载后,系统可以将这些文件统一删除掉。获取文件的方式主要有以下几种。

File file1 =this.getFilesDir();//获取当前程序默认的数据存储目录
        Log.d("Jinx",file1.toString());
        File file2 =this.getCacheDir(); //默认的缓存文件存储位置
        Log.d("Jinx",file2.toString());
        File file3=this.getDir("test",MODE_PRIVATE);    //在存储目录下创建该文件
        Log.d("Jinx",file3.toString());
        File file4=this.getExternalFilesDir(Environment.DIRECTORY_MUSIC);   //获取外部存储文件
        Log.d("Jinx",file4.toString());
        File file5=this.getExternalCacheDir();  //获取外部缓存文件
        Log.d("Jinx",file5.toString());

 

相应的Log日志如下,根据日志,可以很清楚看到每种方法获取到的文件的区别:

03-28 03:19:06.948 12690-12690/com.example.jinx.file D/Jinx: /data/user/0/com.example.jinx.file/files
03-28 03:19:06.948 12690-12690/com.example.jinx.file D/Jinx: /data/user/0/com.example.jinx.file/cache
03-28 03:19:06.948 12690-12690/com.example.jinx.file D/Jinx: /data/user/0/com.example.jinx.file/app_test
03-28 03:19:06.963 12690-12690/com.example.jinx.file D/Jinx: /storage/emulated/0/Android/data/com.example.jinx.file/files/Music
03-28 03:19:06.966 12690-12690/com.example.jinx.file D/Jinx: /storage/emulated/0/Android/data/com.example.jinx.file/cache

 

当然,如果有一些重要的文件,不想在APP被删除时丢失,则可以自定义文件路径,如下所示:

File file=new File("/mmt/sdcard/test");
        if(!file.exists())
        {
            Toast.makeText(MainActivity.this,"good!",Toast.LENGTH_SHORT).show();
            try
            {
                file.createNewFile();
            } catch (IOException e)
            {
                e.printStackTrace();
            }
        }
        else
        {
            Toast.makeText(MainActivity.this,"good!",Toast.LENGTH_SHORT).show();
        }

 

读写文件操作


Android通过自带的FileInputStream和FileOutputStream来进行文件的读写,具体代码如下:

1.文件写入:

private void WriteText(String text)
    {
        try
        {
            FileOutputStream fos=openFileOutput("a.txt",MODE_APPEND);   //获取FileOutputStream对象
            fos.write(text.getBytes()); //写入字节
            fos.close();    //关闭文件流
        } catch (FileNotFoundException e)
        {
            e.printStackTrace();
        } catch (IOException e)
        {
            e.printStackTrace();
        }
    }

 

2.文件读取

private String Read()
    {
        String text=null;
        try
        {
            FileInputStream fis=openFileInput("a.txt"); //获取FileInputStream对象
            //ByteArrayOutputStream来存放获取到的数据信息
            ByteArrayOutputStream baos=new ByteArrayOutputStream(); 
            
            byte [] buffer=new byte[1024];  //创建byte数组,分多次获取数据
            int len=0;
            while ((len=fis.read(buffer))!=-1)  //通过FileInputStream的read方法来读取信息
            {
                baos.write(buffer,0,len);   //ByteArrayOutputStream的write方法来写入读到的数据
            }
            text=baos.toString();
            fis.close();
        } catch (FileNotFoundException e)
        {
            e.printStackTrace();
        } catch (IOException e)
        {
            e.printStackTrace();
        }
        return text;
    }

转载于:https://www.cnblogs.com/J-inx/p/6635030.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值