源码:https://github.com/kymjs/KJFrameForAndroid

Environment类的使用:http://www.2cto.com/kf/201408/327215.html

一、检查手机是否插入SD卡

步骤:①通过Environment类获取手机状态,判断是否SD卡存在

知识点:Environment类获取SD卡状态

Android应用开发中,常使用Environment类去获取外部存储目录,在访问外部存储之前一定要先判断外部存储是否已经是可使用(已挂载&可使用)状态,
并且需要在AndroidManifest.xml文件中添加外部存储读和写的权限。
Environment类中提供了几个静态常量用于标识外部存储的状态,这些状态都是String类型
MEDIA_BAD_REMOVAL 在没有挂载前存储媒体已经被移除。
MEDIA_CHECKING 正在检查存储媒体。
MEDIA_MOUNTED 存储媒体已经挂载,并且挂载点可读/写。
MEDIA_MOUNTED_READ_ONLY 存储媒体已经挂载,挂载点只读。
MEDIA_NOFS 存储媒体是空白或是不支持的文件系统。
MEDIA_REMOVED 存储媒体被移除。
MEDIA_SHARED 存储媒体正在通过USB共享。
MEDIA_UNMOUNTABLE 存储媒体无法挂载。
MEDIA_UNMOUNTED 存储媒体没有挂载。
可以通过静态方法getExternalStorageState()来获取外部存储的状态,如果程序需要在外部存储里面读写数据,必须要先判断: if(Environment.MEDIA_MOUNTED.equals(
Environment.getExternalStorageState())
|| !Environment.isExternalStorageRemovable())
然后,添加外部存储读和写的权限: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission></uses-permission>

可获得SD卡的状态参数

二、获取SD卡路径

步骤:调用Environment类获取SD卡路径。

知识点:Environment类能够获取的文件句柄

①、公共的文件夹的句柄(例:相机拍摄标准目录、电影存放标准目录等)

调用:
Environment.getExternalStoragePublicDirectory(type);
type类指:
DIRECTORY_ALARMS 系统提醒铃声存放的标准目录。
DIRECTORY_DCIM 相机拍摄照片和视频的标准目录。
DIRECTORY_DOWNLOADS 下载的标准目录。
DIRECTORY_MOVIES 电影存放的标准目录。
DIRECTORY_MUSIC 音乐存放的标准目录。
DIRECTORY_NOTIFICATIONS 系统通知铃声存放的标准目录。
DIRECTORY_PICTURES 图片存放的标准目录
DIRECTORY_PODCASTS 系统广播存放的标准目录。
DIRECTORY_RINGTONES 系统铃声存放的标准目录。

公共文件夹的句柄

②、SD卡路径,系统路径等路径

static File getDataDirectory() 获得data的目录(/data)。
static File getDownloadCacheDirectory() 获得下载缓存目录。(/cache)
static File getExternalStorageDirectory() 获得外部存储媒体目录。(/mnt/sdcard or /storage/sdcard0)
static File getRootDirectory() 获得系统主目录(/system)

获取各个路径的方法

题外话:当使用LruCache和DiskCahce的时候必不可少需要用到,缓存文件夹(当app卸载会被删除掉)

所以缓存文件夹的路径(获取的都是绝对路径):

context.getCacheDir() 获取应用程序自己的缓存目录
context.getExternalCacheDir() 获取应用程序在外部存储的存储目录

三、获取所需文件夹的句柄

步骤:①、获取文件夹句柄   ②、判断该文件夹是否存在,存在则返回绝对路径,不存在则创建文件夹。

知识点:File文件夹的创建、File文件的创建、File对象本身代表的意义是什么。   利用File.seperate产生"/"分隔符。

四、获取文件的路径

步骤:①、首先判断该文件路径上的文件夹是否存在  ②、创建文件的句柄  ③、判断文件是否存在,若不存在则创建该文件  ④、最后返回file

五、将InputStream流转换为byte[]数组

步骤:1、判断inputStream是否不为null 2、将inputStream套上ButteredInputStream(提高效率) 3、创建ByteOutputStream流(将inputStream的数据写入内存中,然后在拿出)4、将inputStream的数据写入ByteOutputStream

知识点:①、流的装饰类种类和使用

六、统一关闭流的方法

步骤 1、将输入参数设置为可变输入参数:Closeable ... closeables  (Closeable是关闭流的接口,流都继承了该接口)  2、判断closeables是否不为null 3、用foreach循环遍历closeable,并关闭流。

知识点:①、流继承closeable接口,用来关闭流本身  ②、foreach循环的条件是  继承Iterable接口的类 或者是数组

七、将Bitmap转换成文件

步骤  1、判断Bitmap和文件路径是否为null  2、创建文件(首先创建文件夹、之后才创建文件) 3、获取文件流,为提高效率,使用BufferedOutputStream装饰类封装  4、调用bitmap.compress() 能够将bitmap 压缩并导入到文件中.

Bitmap.compress()方法的参数format可设置JPEG或PNG格式;quality表示压缩率(0~100  100是不压缩,30是压缩70% 倒推);fOut是输出流(文件输出流)

使用图:

知识点:1、最好每个流都用Buffered封装一下。  2、bitmap.compress()的使用,将图片输出到文本。  3、利用String分割路径

八、将inputStream转换成输出string(input2String())

步骤:1、判断inputstrem是否存在  2、利用BufferedReader、InputStreamReader 封装inputStream  3、利用StringBuilder接收数据

4、返回数据

知识点:1、StringBuilder与StringBuffer的区别

九、获取file文件中的数据(readFile(File file))

步骤:1、判断文件是否为null 2、判断文件是否存在  3、获取文件输入流  4、交给inputToString()方法处理。

FileUtils类应该有哪些内容的更多相关文章

  1. [19/04/04-星期四] IO技术_CommonsIO(通用IO,别人造的轮子,FileUtils类 操作文件 & IOUtilsl类 操作里边的内容 )

    一.概念 JDK中提供的文件操作相关的类,但是功能都非常基础,进行复杂操作时需要做大量编程工作.实际开发中,往往需要 你自己动手编写相关的代码,尤其在遍历目录文件时,经常用到递归,非常繁琐. Apac ...

  2. Java File类总结和FileUtils类

    Java File类总结和FileUtils类 文件存在和类型判断 创建出File类的对象并不代表该路径下有此文件或目录. 用public boolean exists()可以判断文件是否存在. Fi ...

  3. ItcastOA_设计BaseDao_设计DAO接口和实现类_写DAO实现类中的方法内容

    3. 基础功能 3.1. 设计BaseDao接口与BaseDaoImpl类 每个实体都应有一个对应的Dao,他封装了对这个实体的数据库操作.例 实体Dao接口实现类 ================= ...

  4. phpcms替换类列表页,内容页,主页

    phpcms替换类列表页,内容页,主页   利用phpcms制作企业站,首先要将静态的企业主页替换成后台可编辑的动态主页. 在phpcms/install_package/phpcms/templat ...

  5. 黑马基础阶段测试题:创建Phone(手机)类,Phone类中包含以下内容:

    package com.swift; public class Phone { private String pinpai; private int dianliang; public String ...

  6. XCode中的单元测试:编写测试类和方法(内容意译自苹果官方文档)

    当你在工程中通过测试导航栏添加了一个测试target之后, xcode会在测试导航栏中显示该target所属的测试类和方法. 这一章演示了怎么创建测试类,以及如何编写测试方法. 测试targets, ...

  7. Java 学习之反射机制“解刨”分解类,并获取内容!

    正常情况下,单纯的做开发是接触不到反射机制的(额,当然并不排除例外的情况了).下面我就对我学到的反射方面的知识做一个小小的总结,旨在复习和以后的查看. 原理分析: 所谓反射就是将一个类当做我们研究的对 ...

  8. java基础知识回顾之javaIO类--File类应用:删除带内容的目录

    /** * 深度删除一个带内容的目录 * 原理:必须从里往外删除,需要深度遍历 * @author Administrator * */ public class FileDeleteList { / ...

  9. FileUtils类介绍

    Java的文件操作太基础,缺乏很多实用工具,比如对目录的操作,支持就非常的差了.如果你经常用Java操作文件或文件夹,你会觉得反复编写这些代码是令人沮丧的问题,而且要大量用到递归. 下面是的一个解决方 ...

随机推荐

  1. PHP打开PDO_MySQL扩展的配置方法

    PHP中的PDO其实是一个很好用的扩展,在一些PHPCMS系统中,开发者大多都有用到,那么如何开启PDO和PDO_MySQL扩展呢?方法同样很简单: 打开php.ini配置文件,找到extension ...

  2. HTML5实现的视频播放器01

    HTML5实现的视频播放器   什么是hivideo? 最近一段时间在使用PhoneGap开发一个App应用,App需要播放视频,本想直接使用html5的video,但使用它在全屏播放时不支持横屏播放 ...

  3. 设置iOS项目BuildVersion自动增加-备用

    一.概念阐述:Build与Version的区别 在iOS中有两种“版本号”,也就是所谓的version号与build号,如下图所示: 我们用最简洁的语言来区分这两个版本号的区别以及用途如下: Vers ...

  4. 自制单片机之七……扩展:DS18B20温度测量

    DS18B20数字温度测量传感器,网上介绍很多,我就不罗嗦了.见图 DS18B20与前产品DS1820的不同: DS18B20继承了DS1820的全部优点,并做了如下改进 1.供电范围扩大为3.0-- ...

  5. Spring注解 @Resource和@Autowired

    @Resource和@Autowired两者都是做bean的注入使用.其实@Resource并不是Spring的注解,他的包是javax.annotation.Resource 需要导入.但是Spri ...

  6. NOI2012 魔幻棋盘

    http://www.lydsy.com/JudgeOnline/problem.php?id=2877 二维线段树. 好恶...... B类数据: 棋盘是一维的. 我们有一个结论: $gcd(a_{ ...

  7. MongoDB命令行操作

    本文专门介绍MongoDB的命令行操作.其实,这些操作在MongoDB官网提供的Quick Reference上都有,但是英文的,为了方便,这里将其稍微整理下,方便查阅. 这里用来做测试的是远端(10 ...

  8. Html5学习笔记(一)

    一:常见标签类型 块级标签 特点:1.独占一行 2,可以随时设置w,h   2.行内标签(内联) 特点: 1.多个行内标签能同时显示在一行 2.w.h取决于内容的尺寸()   3.行内-块级标签 特点 ...

  9. RPG JS跨平台测试

    RPG JS虽然说是跨平台的,但是在具体的测试中效果并不理想. 以官方提供的Demo为例 问题一 手机的屏幕太小,导致画面上的人物都很小,连点击都很不准确.在9寸的平板上才可以看得比较清楚. 问题二 ...

  10. maven pom.xml具体解释(整理)

    pom作为项目对象模型. 通过xml表示maven项目,使用pom.xml来实现.主要描写叙述了项目:包含配置文件.开发人员须要遵循的规则,缺陷管理系统.组织和licenses,项目的url,项目的依 ...