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: ...
随机推荐
- VPN服务器搭建好以后的安全防护
之前讲过VPN的搭建过程,那么搭建完毕后,需要做哪些防护呢? 这里只说一下禁止VPN账户登录到服务器的设置,直接上图 找到权限分配后把VPN账号添加到拒绝本地登录的策略中,这样保障了VPN账户不能通过 ...
- 13.java.lang.NoSuchFiledException
java.lang.NoSuchFiledException 方法不存在异常 当程序试图通过反射来创建对象,访问(修改或读取)某个filed,但是该filed不存在就会引发异常
- Http 请求头中的 Proxy-Connection
平时用 Chrome 开发者工具抓包时,经常会见到 Proxy-Connection 这个请求头.之前一直没去了解什么情况下会产生它,也没去了解它有什么含义.最近看完<HTTP 权威指南> ...
- MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)
MyBitis(iBitis)系列随笔之一:MyBitis入门实例 MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM) MyBitis(iBitis ...
- LBYL与EAFP两种防御性编程风格
检查数据可以让程序更健壮,用术语来说就是防御性编程. 检查数据的时候,有这样的两种不同的风格. LBYL:Look Before You Leap EAFP:It's Easier to Ask ...
- 链表-Partition List
struct ListNode* partition(struct ListNode* head, int x) { struct ListNode *p1=(struct ListNode*)mal ...
- DOM4J读取XML文件
最近在做DRP的项目,其中涉及到了读取配置文件,用到了DOM4J,由于是刚开始接触这种读取xml文件的技术,好奇心是难免的,于是在网上又找了一些资料,这里就结合找到的资料来谈一下读取xml文件的4中方 ...
- JavaScript引用类型之Array数组的拼接方法-concat()和截取方法-slice()
1.concat() 基于当前数组中的所有项创建一个新数组(也就是副本),然后将接收到的参数添加到副本的末尾,最后返回新构建的数组.也就是说,concat()在向数组中追加元素时,不会改变原有数组 ...
- 2014.9.15HTML
<html> <title> </title> ——页面标题 <head> </head> ——网页上的控制信息 <body> ...
- 论try/catch的重要性,我们经常遇到代码出现无法调试的错误,程序退出的时候崩溃。这跟我们代码日常保护的习惯息息相关。
每当构造函数或析构函数中出现溢出,会导致调试非常困难,而使用try/catch来处理构造中的初始化就非常重要了. 如上图,在构造函数中,我们的很多初始化动作会放在这里,但是却忽视了,一旦初始化出错了, ...