为了账号安全,请及时绑定邮箱和手机立即绑定

android IO流操作总结

标签:
Android
文件读取的基础流程 使用api获取内部文件的存储路径

应用只能在自己的包名文件夹中读写文件,三种方式获取内部文件的存储路径

使用字符串来表示应用的内部文件路径

    File file = new File("data/data/com.example.www/info.txt");

使用API来获取应用的内容文件夹路径,会在包名下生成files文件夹用于存储文件

    File file = new File(getFilesDir(), "info.txt");

使用API来获取应用的内容文件夹路径,会在包名下生成cache文件夹用于存储文件,存储空间不足时会被删除

    File file = new File(getCacheDir(), "info.txt");
使用api获取外部文件的存储路径

该链接指向外部存储的地址
图片描述

    storage/sdcard 

增加外部存储访问读写的权限

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

使用API来获取外部存储路径

    File file = new File(Environment.getExternalStorageDirectory(), "info.txt");
SD的状态
    MEDIA_REMOVED:sd卡不存在
    MEDIA_UNMOUNTED:sd卡存在,但是没有挂载
    MEDIA_CHECKING:sd卡正在遍历
    MEDIA_MOUNTED:sd卡可用
    MEDIA_MOUNTED_READ_ONLY:sd卡可用,但是只读
判断SD卡是否存在

获得SD卡的API返回表示状态的字符串常量

    Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)

判断SD卡的剩余空间

// 获取外部存储的路径
File path = Environment.getExternalStorageDirectory();

// 得到外部存储的设备信息
StatFs stat = new StatFs(path.getPath());
long blockSize;
long totalBlocks;
long availableBlocks;

//判断当前版本是否是4.3或以上
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2){

// SD卡被分成若干个区块每个区块都有特定的大小 

// 获得区块的大小
blockSize = stat.getBlockSizeLong();

// 获得区块的数量
totalBlocks = stat.getBlockCountLong();

// 获得可用的区块数量
availableBlocks = stat.getAvailableBlocksLong();
        }
        else{
             blockSize = stat.getBlockSize();
             totalBlocks = stat.getBlockCount();
             availableBlocks = stat.getAvailableBlocks();
        }
// 剩余区块数量*每一个区域的大小 =   剩余空间的字节大小     
String text = formatSize(availableBlocks * blockSize);
    private String formatSize(long size) {
        return Formatter.formatFileSize(this, size);
....
Activity提供了openFileOutput()方法可以用于把数据输出到文件中

在android中,可以通过Context.openFileInput和Context.openFileOutput来分别获取FileInputStream和FileOutputStream。

openFileInput(String fileName); 打开应用程序私有目录下的指定私有文件以读入数据,返回一个FileInputStream对象。

openFileOutput(String name,int mode);打开应用程序私有目录下的指定私有文件以写入数据,返回一个FileOutputStream对象,如果文件不存在就创建这个文件。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消