工具类总结---(五)---SD卡文件管理
里面注释很清楚了。。。
- package cgjr.com.cgjr.utils;
- import android.content.Context;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.os.Environment;
- import android.util.Log;
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.ByteArrayOutputStream;
- import java.io.CharArrayWriter;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.io.Reader;
- import java.io.StringReader;
- import java.io.Writer;
- /**
- * 文件管理类 在以后的开发中也可以使用这个工具类,提高代码的利用性
- * 只要是对SD卡的操作
- * 1、获取SD卡路径 getSDPATH
- * 2、在SD卡上根据传入的目录名创建目录 createSDDir
- * 3、在创建上目录后可以在该目录上创建文件 createSDFile
- * 4、检测文件是否存在 isFileExist
- * 5、将一个InputStream写入到SD卡中 write2SDFromInput
- * 6、将一个字符流写入到SD卡 write2SDFromWrite
- * 注:如果要写入SD卡,只要调用write2SDFromInput函数即可
- *
- * @author Administrator
- */
- public class FileUtils {
- private static String SDPATH;
- private static final String TAG = "FileUtils";
- public FileUtils() {
- //得到当前设备外部存储设备的目录
- SDPATH = Environment.getExternalStorageDirectory() + File.separator;
- }
- /**
- * 获取当前SD卡的根目录
- *
- * @return
- */
- public String getSDPATH() {
- return SDPATH;
- }
- /**
- * SD卡上创建目录
- */
- public File createSDDir(String dirName) {
- File dir = new File(SDPATH + dirName);
- Log.i(TAG, "createSDDir " + SDPATH + dirName);
- if (!dir.exists()) {
- dir.mkdirs();
- }
- return dir;
- }
- /**
- * SD卡上创建文件
- */
- public File createSDFile(String fileName) throws IOException {
- File file = new File(SDPATH + fileName);
- Log.i(TAG, "createSDFile " + SDPATH + fileName);
- file.createNewFile();
- return file;
- }
- /**
- * 判断SD卡上的文件是否存在
- */
- public boolean isFileExist(String fileName) {
- File file = new File(SDPATH + fileName);
- return file.exists();
- }
- /**
- * 将一个InputStream字节流写入到SD卡中
- */
- public File write2SDFromInput(String Path, String FileName, InputStream input) {
- File file = null;
- OutputStream output = null; //创建一个写入字节流对象
- try {
- createSDDir(Path); //根据传入的路径创建目录
- file = createSDFile(Path + FileName); //根据传入的文件名创建
- output = new FileOutputStream(file);
- byte buffer[] = new byte[4 * 1024]; //每次读取4K
- int num = 0; //需要根据读取的字节大小写入文件
- while ((num = (input.read(buffer))) != -1) {
- output.write(buffer, 0, num);
- }
- output.flush(); //清空缓存
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- if (output != null)
- output.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return file;
- }
- /**
- * 把传入的字符流写入到SD卡中
- *
- * @param Path
- * @param FileName
- * @param input
- * @return
- */
- public File write2SDFromWrite(String Path, String FileName, BufferedReader input) {
- File file = null;
- FileWriter output = null; //创建一个写入字符流对象
- BufferedWriter bufw = null;
- try {
- createSDDir(Path); //根据传入的路径创建目录
- file = createSDFile(Path + FileName); //根据传入的文件名创建
- output = new FileWriter(file);
- bufw = new BufferedWriter(output);
- String line = null;
- while ((line = (input.readLine())) != null) {
- bufw.write(line);
- bufw.newLine();
- }
- bufw.flush(); //清空缓存
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- if (bufw != null)
- bufw.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return file;
- }
- /**
- * 从文本文件对象中读取内容并转换为字符数组
- *
- * @param file File 对象
- * @return 读到的字符数据
- */
- public static char[] readChars(File file) {
- CharArrayWriter caw = new CharArrayWriter();
- try {
- Reader fr = new FileReader(file);
- Reader in = new BufferedReader(fr);
- int count = 0;
- char[] buf = new char[16384];
- while ((count = in.read(buf)) != -1) {
- if (count > 0) caw.write(buf, 0, count);
- }
- in.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return caw.toCharArray();
- }
- /**
- * 从字符串对象中读取内容并转换为字符数组
- *
- * @param string 在读的String数据
- * @return 字符数组
- */
- public static char[] readChars(String string) {
- CharArrayWriter caw = new CharArrayWriter();
- try {
- Reader sr = new StringReader(string.trim());
- Reader in = new BufferedReader(sr);
- int count = 0;
- char[] buf = new char[16384];
- while ((count = in.read(buf)) != -1) {
- if (count > 0) caw.write(buf, 0, count);
- }
- in.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return caw.toCharArray();
- }
- /**
- * 从二进制文件对象中读取内容并转换为字节数组
- *
- * @param file 要读取的File对象
- * @return 读取后的字节数据
- */
- public static byte[] readBytes(File file) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- try {
- InputStream fis = new FileInputStream(file);
- InputStream is = new BufferedInputStream(fis);
- int count = 0;
- byte[] buf = new byte[16384];
- while ((count = is.read(buf)) != -1) {
- if (count > 0) baos.write(buf, 0, count);
- }
- is.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return baos.toByteArray();
- }
- /**
- * 写字节数组内容到二进制文件
- *
- * @param file File对象
- * @param data 输出字节数组
- */
- public static void writeBytes(File file, byte[] data) {
- try {
- OutputStream fos = new FileOutputStream(file);
- OutputStream os = new BufferedOutputStream(fos);
- os.write(data);
- os.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 写字符数组内容到文本文件
- *
- * @param file File对象
- * @param data 输出字节数组
- */
- public static void writeChars(File file, char[] data) {
- try {
- Writer fos = new FileWriter(file);
- Writer os = new BufferedWriter(fos);
- os.write(data);
- os.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * Environment.getDataDirectory() +path 读取文件
- *
- * @see #localWriter(Bitmap, String, String)
- */
- public static Bitmap localReader(String name, String path) {
- File fileRe = null;
- try {
- File dataDirectory = Environment.getExternalStorageDirectory();
- if (dataDirectory.exists()) {
- fileRe = new File(dataDirectory.getPath() + File.separator + path + File.separator + name);
- // 文件不存在
- if (fileRe == null || !fileRe.exists()) {
- return null;
- } else {
- return BitmapFactory.decodeFile(fileRe.getPath());
- }
- }
- } catch (Exception e) {
- return null;
- }
- return null;
- }
- public static Bitmap localReaderByPath(String name, String path,Context context) {
- File fileRe = null;
- try {
- fileRe = new File(path + File.separator + MD5Util.md5(name));
- // 文件不存在
- if (fileRe == null || !fileRe.exists()) {
- return null;
- } else {
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inJustDecodeBounds = true;
- BitmapFactory.decodeFile(fileRe.getPath(), options);
- int width = options.outWidth;
- int height = options.outHeight;
- int inSampleSize = 1;
- int size = width /context.getResources().getDisplayMetrics().widthPixels;
- if (size > 0) {
- inSampleSize = size;
- }
- Log.i("AsyncImageLoader", "height is: " + height + " width is: " + width + "sampleSize: " + inSampleSize);
- options.inPurgeable = true;
- options.inInputShareable = true;
- options.inSampleSize = inSampleSize;
- options.inJustDecodeBounds = false;
- return BitmapFactory.decodeFile(fileRe.getPath(),options);
- }
- } catch (Exception e) {
- return null;
- }
- }
- /**
- * Environment.getDataDirectory()
- *
- * @param bm
- * @param name
- * @param path
- * @return
- * @see #localReader(String, String)
- */
- public static boolean localWriter(Bitmap bm, String name, String path) {
- File dataDirectory = Environment.getExternalStorageDirectory();
- try {
- if (dataDirectory.exists()) {
- String s = dataDirectory.getPath() + File.separator + path + File.separator;
- File write = new File(s);
- if (!write.exists()) {
- if (write.mkdirs()) {
- FileOutputStream fileOutputStream = new FileOutputStream(new File(s + MD5Util.md5(name)));
- fileOutputStream.write(StreamUtils.bitmap2Bytes(bm));
- fileOutputStream.close();
- }
- } else {
- FileOutputStream fileOutputStream = new FileOutputStream(new File(s + MD5Util.md5(name)));
- fileOutputStream.write(StreamUtils.bitmap2Bytes(bm));
- fileOutputStream.close();
- }
- }
- } catch (Exception e) {
- return false;
- }
- return true;
- }
- /**
- * Environment.getDataDirectory()
- *
- * @param bm
- * @param name
- * @param path
- * @return
- * @see #localReader(String, String)
- */
- public static boolean localWriterByPath(Bitmap bm, String name, String path) {
- try {
- String s = path + File.separator;
- File write = new File(s);
- if (!write.exists()) {
- if (write.mkdirs()) {
- FileOutputStream fileOutputStream = new FileOutputStream(new File(s + MD5Util.md5(name)));
- fileOutputStream.write(StreamUtils.bitmap2Bytes(bm));
- fileOutputStream.close();
- }
- } else {
- FileOutputStream fileOutputStream = new FileOutputStream(new File(s + MD5Util.md5(name)));
- fileOutputStream.write(StreamUtils.bitmap2Bytes(bm));
- fileOutputStream.close();
- }
- } catch (Exception e) {
- return false;
- }
- return true;
- }
- }
工具类总结---(五)---SD卡文件管理的更多相关文章
- JQuery中的工具类(五)
一:1.serialize()序列表表格内容为字符串.返回值jQuery示例序列表表格内容为字符串,用于 Ajax 请求. HTML 代码:<p id="results"&g ...
- 并发工具类(五) Phaser类
前言 JDK中为了处理线程之间的同步问题,除了提供锁机制之外,还提供了几个非常有用的并发工具类:CountDownLatch.CyclicBarrier.Semphore.Exchanger.Ph ...
- IntentActionUtil【Intent的常见作用的工具类】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 主要用于通过Intent调用手机本地软件打开文件(doc.xsl.pdf.ppt.mp3.mp4等格式).安装apk.发送邮件.拨打 ...
- Android工具类整合
Android-JSONUtil工具类 常用的Json工具类,包含Json转换成实体.实体转json字符串.list集合转换成json.数组转换成json public class JSONUtil ...
- WP8.1 Study12:文件压缩与Known Folder(包含SD卡操作)
一.文件压缩 当应用程序保存和加载数据,它可以使用压缩. 1.使用 Windows.Storage.Compression.Compressor 压缩,获得一个Compressor stream. v ...
- 基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil
基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil,把日常能用到的各种CRUD都进行了简化封装,让普通程序员只需关注业务即可,因为非常简单,故直接贴源代码,大家若需使用可以直 ...
- BoneBlack am335x利用SD卡烧写板卡上的emmc
参考ti论坛上面的一篇文章: 链接:https://pan.baidu.com/s/1SLSUbCRrIULJJf_BNI3sEQ 密码: hvem 自己稍微修改的debrick.sh 链接: htt ...
- 2019 SD卡、U盘无法格式化怎么办的解决方法
有天 闲的没事, 格式化一下U盘 ,结果突然断电了,我的天.我还在格式化的U盘 ,果然 ,我在此启动电脑后,的U盘直接 就不能用了.于是 我格式化. 然后,我的U盘就怎么也格式化不好了 ,找到了几种解 ...
- JavaScript工具类(三):localStorage本地储存
localStorage Web 存储 API 提供了 sessionStorage (会话存储) 和 localStorage(本地存储)两个存储对象来对网页的数据进行添加.删除.修改.查询操作. ...
随机推荐
- 实验楼-2-Linux基础快捷键
终端:本质上对应着Linux上的/dev/tty设备 shell:打开终端,shell则自动打开 可以在终端直接输入: echo "hello world" /*shell程序自动 ...
- jQuery购物车
效果图 HTML代码:(非表格方式) <div class="nav2"> <input type="checkbox" class=&quo ...
- Zabbix3.0部署最佳实践
Zabbix3整个web界面做了一个全新的设计. 更多新特性请点击当前字幕查看 笔者QQ:572891887 Linux架构交流群:471443208 1.1Zabbix环境准备 [root@li ...
- poptest老李谈jvm的GC
poptest老李谈jvm的GC poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:90882 ...
- HBase_在Linux上安装以及运用
1.上传解压文件 文件:hbase-1.0.1.1-bin.tar 2.更改配置文件 在hbase-env.sh中, export JAVA_HOME=/home/lang/software/jdk1 ...
- (iOS)开发中收集的小方法
1.颜色转变成图片 - (UIImage *)createImageWithColor:(UIColor *)color { CGRect rect = CGRectMake(0.0f, 0. ...
- jquery template.js前端模板引擎
作为现代应用,ajax的大量使用,使得前端工程师们日常的开发少不了拼装模板,渲染模板 在刚有web的时候,前端与后端的交互,非常直白,浏览器端发出URL,后端返回一张拼好了的HTML串.浏览器对其进行 ...
- 理解C++中的头文件和源文件的作用【转】
一.C++编译模式通常,在一个C++程序中,只包含两类文件--.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称作C++头文件,里面放的也是C+ ...
- 【模板】Tarjan求强连通分量
有人说这篇博客不是很友好,所以我加了点解释,感觉是不是友好多了? dfn[u]表示节点u在dfs时被访问的次序. low[u]表示节点u能够追溯到的最远的祖先的dfn. ins[u]表示节点u是否在栈 ...
- .Net MVC4笔记之Razor视图引擎的基础语法
Razor视图引擎的基础语法: 1.“_”开头的cshtml文档将不能在服务器上访问,和asp.net中的config文档差不多. 2.Razor语法以@开头,以@{}进行包裹. 3.语法使用: 注释 ...