ANDROID对文件的操作
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import android.os.Environment;
- import android.os.StatFs;
- import android.util.Log;
- public class FileUtil {
- private static int bufferd = 1024;
- private FileUtil() {
- }
- /*
- * <!-- 在SDCard中创建与删除文件权限 --> <uses-permission
- * android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <!--
- * 往SDCard写入数据权限 --> <uses-permission
- * android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- */
- // =================get SDCard information===================
- public static boolean isSdcardAvailable() {
- String status = Environment.getExternalStorageState();
- if (status.equals(Environment.MEDIA_MOUNTED)) {
- return true;
- }
- return false;
- }
- public static long getSDAllSizeKB() {
- // get path of sdcard
- File path = Environment.getExternalStorageDirectory();
- StatFs sf = new StatFs(path.getPath());
- // get single block size(Byte)
- long blockSize = sf.getBlockSize();
- // 获取所有数据块数
- long allBlocks = sf.getBlockCount();
- // 返回SD卡大小
- return (allBlocks * blockSize) / 1024; // KB
- }
- /**
- * free size for normal application
- *
- * @return
- */
- public static long getSDAvalibleSizeKB() {
- File path = Environment.getExternalStorageDirectory();
- StatFs sf = new StatFs(path.getPath());
- long blockSize = sf.getBlockSize();
- long avaliableSize = sf.getAvailableBlocks();
- return (avaliableSize * blockSize) / 1024;// KB
- }
- // =====================File Operation==========================
- public static boolean isFileExist(String director) {
- File file = new File(Environment.getExternalStorageDirectory()
- + File.separator + director);
- return file.exists();
- }
- /**
- * create multiple director
- *
- * @param path
- * @return
- */
- public static boolean createFile(String director) {
- if (isFileExist(director)) {
- return true;
- } else {
- File file = new File(Environment.getExternalStorageDirectory()
- + File.separator + director);
- if (!file.mkdirs()) {
- return false;
- }
- return true;
- }
- }
- public static File writeToSDCardFile(String directory, String fileName,
- String content, boolean isAppend) {
- return writeToSDCardFile(directory, fileName, content, "", isAppend);
- }
- /**
- *
- * @param director
- * (you don't need to begin with
- * Environment.getExternalStorageDirectory()+File.separator)
- * @param fileName
- * @param content
- * @param encoding
- * (UTF-8...)
- * @param isAppend
- * : Context.MODE_APPEND
- * @return
- */
- public static File writeToSDCardFile(String directory, String fileName,
- String content, String encoding, boolean isAppend) {
- // mobile SD card path +path
- File file = null;
- OutputStream os = null;
- try {
- if (!createFile(directory)) {
- return file;
- }
- file = new File(Environment.getExternalStorageDirectory()
- + File.separator + directory + File.separator + fileName);
- os = new FileOutputStream(file, isAppend);
- if (encoding.equals("")) {
- os.write(content.getBytes());
- } else {
- os.write(content.getBytes(encoding));
- }
- os.flush();
- } catch (IOException e) {
- Log.e("FileUtil", "writeToSDCardFile:" + e.getMessage());
- } finally {
- try {
- if(os != null){
- os.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return file;
- }
- /**
- * write data from inputstream to SDCard
- */
- public File writeToSDCardFromInput(String directory, String fileName,
- InputStream input) {
- File file = null;
- OutputStream os = null;
- try {
- if (createFile(directory)) {
- return file;
- }
- file = new File(Environment.getExternalStorageDirectory()
- + File.separator + directory + fileName);
- os = new FileOutputStream(file);
- byte[] data = new byte[bufferd];
- int length = -1;
- while ((length = input.read(data)) != -1) {
- os.write(data, 0, length);
- }
- // clear cache
- os.flush();
- } catch (Exception e) {
- Log.e("FileUtil", "" + e.getMessage());
- e.printStackTrace();
- } finally {
- try {
- os.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return file;
- }
- /**
- * this url point to image(jpg)
- *
- * @param url
- * @return image name
- */
- public static String getUrlLastString(String url) {
- String[] str = url.split("/");
- int size = str.length;
- return str[size - 1];
- }
- }
下面对代码进行了测试,使用了AndroidJunitTest,当然另外还需要对SDCard查看操作的权限。
1、对android项目的mainfest.xml进行配置,需要注意targetPacket应当与包名保持一致。
- //在mainfest标签下
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
- <instrumentation
- android:name="android.test.InstrumentationTestRunner"
- android:targetPackage="com.example.mygeneralutil" >
- </instrumentation>
- //在mainfest的application标签下
- <uses-library android:name="android.test.runner"/>
2、简单的测试代码如下:
- import android.test.AndroidTestCase;
- import android.util.Log;
- public class FileUtilTest extends AndroidTestCase {
- public void testIsSdcardAvailable() {
- FileUtil.isSdcardAvailable();
- Log.e("FileUtil", ""+FileUtil.isSdcardAvailable());
- }
- public void testGetSDAllSizeKB() {
- FileUtil.getSDAllSizeKB();
- Log.e("FileUtil", ""+(float)FileUtil.getSDAllSizeKB()/1024/1024);
- }
- public void testGetSDAvalibleSizeKB() {
- FileUtil.getSDAvalibleSizeKB();
- Log.e("FileUtil", ""+(float)FileUtil.getSDAvalibleSizeKB()/1024/1024);
- }
- public void testIsFileExist() {
- FileUtil.isFileExist("example");
- Log.e("FileUtil", ""+FileUtil.isFileExist("example"));
- }
- public void testCreateFile() {
- Log.e("FileUtil", ""+FileUtil.createFile("forexample"));
- }
- public void testWriteToSDCardFileStringStringStringBoolean() {
- fail("Not yet implemented");
- }
- public void testWriteToSDCardFileStringStringStringStringBoolean() {
- FileUtil.writeToSDCardFile("forexample", "123.txt",
- "FileUtil.writeToSDCardFile", "utf-8", true);
- }
- public void testWriteToSDCardFromInput() {
- fail("Not yet implemented");
- }
- public void testGetUrlLastString() {
- fail("Not yet implemented");
- }
- }
ANDROID对文件的操作的更多相关文章
- ANDROID对文件的操作介绍
1. Android遵循MVC设计思想: M(业务层):service V:视图(main.xml). C:Activity 2.使用文件如何对数据进行存储 Activity提供了openFileOu ...
- Android sdcard文件读写操作
这次演示以,安卓原生操作系统 Nexus_6手机进行操作: AndroidManifest.xml配置相关权限: <!-- 增加权限 --> <uses-permission and ...
- [转]Android - 文件读写操作 总结
转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
- Android - 文件读写操作 总结
在android中的文件放在不同位置,它们的读取方式也有一些不同. 本文对android中对资源文件的读取.数据区文件的读取.SD卡文件的读取及RandomAccessFile的方式和方法进行了整理. ...
- Android进阶(六)文件读操作
Android中文件的读写操作与Java中文件的读写操作是有区别的.在Java中,读文件操作如以下代码所示: public class FileRead { private static final ...
- Android入门之文件系统操作(一)简单的文件浏览器 (转)
Android入门之文件系统操作(一)简单的文件浏览器 (转) import java.io.File; import java.util.*; import android.app.A ...
- Android入门之文件系统操作(二)文件操作相关指令
(一)获取总根 File[] fileList=File.listRoots(); //返回fileList.length为1 //fileList.getAbsolutePath()为"/ ...
- android的文件操作
http://blog.csdn.net/fenghome/article/details/5668598 android的文件操作要有权限: <uses-permission android: ...
随机推荐
- wget www.baidu.com执行流程分析
下载网页的关键函数: main.c(main) b 1394 url_parse:解析url,获取url相关信息,返回结构体 struct url 的指针,存于 url_parsed retrieve ...
- 2016 Multi-University Training Contest 4 总结
第四场多校队伍的发挥还是相当不错的. 我倒着看题,发觉最后一题树状数组可过,于是跟队友说,便开始写,十分钟AC. 欣君翻译01题给磊哥,发现是KMP裸题,但是发现模板太旧,改改后过了. 11题是一道毒 ...
- 10.30 NFLS-NOIP模拟赛 解题报告
总结:今天去了NOIP模拟赛,其实是几道USACO的经典的题目,第一题和最后一题都有思路,第二题是我一开始写了个spfa,写了一半中途发现应该是矩阵乘法,然后没做完,然后就没有然后了!第二题的暴力都没 ...
- 前端开发工具—fiddle
- iOS开发基本须要
iOS开发基本须要 1 准备好对应的硬件和软件配置------基于Intel处理器的Mac操作系统 2 具有C++,Java或其它面向对象编程语言的开发经验 3 最新的iphone SDK的下 ...
- iOS点滴- ViewController详解
一.生命周期 当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序 1. alloc 创建对象,分配空间 2.init (initW ...
- iOS 使用Method Swizzling隐藏Status Bar
在iOS 6中,隐藏Status Bar很的简单. // iOS 6及曾经,隐藏状态栏 [[UIApplication sharedApplication] setStatusBarHidden:YE ...
- Nodejs解析HTML网页模块 jsdom
工作需要抓取某些网页,所以今天试用下了node下的jsdom模块.同样功能的还有jquery jsdom https://npmjs.org/package/jsdom API很简单. jsdom.e ...
- python正则表达式实例
1.将"(332.21)luck李."中(332.21)抽取出来同时能够 将”(23)luck李.“中的(23)抽取出来 pp = re.compile('(\(\d*(.\d*) ...
- javascript小练习—点击将DIV变成红色(通过for循环遍历)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...