文件读取的基础流程
使用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 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦