系统路径

Context.getPackageName();           // 用于获取APP的所在包目录
Context.getPackageCodePath(); //来获得当前应用程序对应的apk文件的路径
Context.getPackageResourcePath(); // 获取该程序的安装包路径
Context.getDatabasePath(); //返回通过Context.openOrCreateDatabase创建的数据库文件 Environment.getDataDirectory().getPath();        // 获得根目录/data
Environment.getDownloadCacheDirectory().getPath(); //获得缓存目录/cache
Environment.getExternalStorageDirectory().getPath(); //获得SD卡目录/mnt/sdcard
Environment.getRootDirectory().getPath();      // 获得系统目录/system
//File.separator 代表 "/"

文件操作

String path = File.getPath();//获得文件或文件夹的绝对路径
String path = File.getAbsoultePath();//获得文件或文件夹的相对路径 String parentPath = File.getParent();//获得文件或文件夹的父目录 String Name = File.getName();//获得文件或文件夹的名称 File.mkDir(); //建立文件夹
File.createNewFile();//建立文件 File[] files = File.listFiles();//列出文件夹下的所有文件和文件夹名 File.isDirectory();//true是文件夹,false是文件 File.renameTo(dest);//修改文件夹和文件名 File.delete();//删除文件夹或文件

资源文件assets和RW

res/raw:文件会被映射到R.java文件中,访问的时候直接通过资源ID访问,没有有目录结构

assets:不会映射到R.java文件中,通过AssetManager来访问,能有目录结构

//raw:
InputStream is =getResources().openRawResource(R.raw.filename); //assets:
AssetManager am = getAssets();
InputStream is = am.open("filename");

从资源文件中获取Bitmap

Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.ico);

FileUtils文件操作类

public class FileUtils {

    //检查SDCard存在并且可以读写
public static boolean isSDCardState(){
return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
} /**
* 判断文件是否已经存在
*@param fileName 要检查的文件名
* @return boolean, true表示存在,false表示不存在
*/
public static boolean isFileExist(String fileName) {
File file = new File("绝对路径" + fileName);
return file.exists();
} /**
* 新建目录
* @param path 目录的绝对路径
* @return 创建成功则返回true
*/
public static boolean createFolder(String path){
File file = new File(path);
return file.mkdir();
} /**
* 创建文件
*@param path 文件所在目录的目录名
* @param fileName 文件名
* @return 文件新建成功则返回true
*/
public static boolean createFile(String path, String fileName) {
File file = new File(path + File.separator + fileName);
if (file.exists()) {
return false;
} else {
try {
return file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
return false;
} /**
* 删除单个文件
* @param path 文件所在的绝对路径
* @param fileName 文件名
* @return 删除成功则返回true
*/
public static boolean deleteFile(String path, String fileName) {
File file = new File(path + File.separator + fileName);
return file.exists() && file.delete();
} /**
* 删除一个目录(可以是非空目录)
* @param dir 目录绝对路径
*/
public static boolean deleteDirection(File dir) {
if (dir == null || !dir.exists() || dir.isFile()) {
return false;
}
for (File file : dir.listFiles()) {
if (file.isFile()) {
file.delete();
} else if (file.isDirectory()) {
deleteDirection(file);//递归
}
}
dir.delete();
return true;
} /**
* 将字符串写入文件
*@param text 写入的字符串
* @param fileStr 文件的绝对路径
* @param isAppend true从尾部写入,false从头覆盖写入
*/
public static void writeFile(String text, String fileStr, boolean isAppend) {
try {
File file = new File(fileStr);
File parentFile = file.getParentFile();
if (!parentFile.exists()) {
parentFile.mkdirs();
}
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream f = new FileOutputStream(fileStr, isAppend);
f.write(text.getBytes());
f.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} /**
* 拷贝文件
*@param srcPath 绝对路径
* @param destDir 目标文件所在目录
* @return boolean true拷贝成功
*/
public static boolean copyFile(String srcPath, String destDir){
boolean flag = false;
File srcFile = new File(srcPath); // 源文件
if (!srcFile.exists()){
Log.i("FileUtils is copyFile:","源文件不存在");
return false;
}
// 获取待复制文件的文件名
String fileName = srcPath.substring(srcPath.lastIndexOf(File.separator));
String destPath = destDir + fileName;
if (destPath.equals(srcPath)){
Log.i("FileUtils is copyFile:","源文件路径和目标文件路径重复");
return false;
}
File destFile = new File(destPath); // 目标文件
if (destFile.exists() && destFile.isFile()){
Log.i("FileUtils is copyFile:","该路径下已经有一个同名文件");
return false;
}
File destFileDir = new File(destDir);
destFileDir.mkdirs();
try{
FileInputStream fis = new FileInputStream(srcPath);
FileOutputStream fos = new FileOutputStream(destFile);
byte[] buf = new byte[1024];
int c;
while ((c = fis.read(buf)) != -1) {
fos.write(buf, 0, c);
}
fis.close();
fos.close();
flag = true;
}catch (IOException e){
e.printStackTrace();
}
return flag;
} /**
* 重命名文件
*@param oldPath 旧文件的绝对路径
* @param newPath 新文件的绝对路径
* @return 文件重命名成功则返回true
*/
public static boolean renameTo(String oldPath, String newPath){
if (oldPath.equals(newPath)){
Log.i("FileUtils is renameTo:","文件重命名失败:新旧文件名绝对路径相同");
return false;
}
File oldFile = new File(oldPath);
File newFile = new File(newPath); return oldFile.renameTo(newFile);
} /**
* 计算某个文件的大小
*@param path 文件的绝对路径
*@return 文件大小
*/
public static long getFileSize(String path){
File file = new File(path);
return file.length();
} /**
*计算某个文件夹的大小
*@param file 目录所在绝对路径
* @return 文件夹的大小
*/
public static double getDirSize(File file) {
if (file.exists()) {
//如果是目录则递归计算其内容的总大小
if (file.isDirectory()) {
File[] children = file.listFiles();
double size = 0;
for (File f : children)
size += getDirSize(f);
return size;
} else {//如果是文件则直接返回其大小,以“兆”为单位
return (double) file.length() / 1024 / 1024;
}
} else {
return 0.0;
}
} /**
* 获取某个路径下的文件列表
* @param path 文件路径
* @return 文件列表File[] files
*/
public static File[] getFileList(String path) {
File file = new File(path);
if (file.isDirectory()){
File[] files = file.listFiles();
if (files != null){
return files;
}else{
return null;
}
}else{
return null;
}
} /**
* 计算某个目录包含的文件数量
*@param path 目录的绝对路径
* @return 文件数量
*/
public static int getFileCount(String path){
File directory = new File(path);
File[] files = directory.listFiles();
return files.length;
} /**
* 获取SDCard 总容量大小(MB)
*@param path 目录的绝对路径
* @return 总容量大小
* */
public long getSDCardTotal(String path){ if(null != path&&path.equals("")){ StatFs statfs = new StatFs(path);
//获取SDCard的Block总数
long totalBlocks = statfs.getBlockCount();
//获取每个block的大小
long blockSize = statfs.getBlockSize();
//计算SDCard 总容量大小MB
return totalBlocks*blockSize/1024/1024; }else{
return 0;
}
} /**
* 获取SDCard 可用容量大小(MB)
*@param path 目录的绝对路径
* @return 可用容量大小
* */
public long getSDCardFree(String path){ if(null != path&&path.equals("")){ StatFs statfs = new StatFs(path);
//获取SDCard的Block可用数
long availaBlocks = statfs.getAvailableBlocks();
//获取每个block的大小
long blockSize = statfs.getBlockSize();
//计算SDCard 可用容量大小MB
return availaBlocks*blockSize/1024/1024; }else{
return 0;
}
}
}
 

Android FileUtils 文件操作类的更多相关文章

  1. android 文件操作类简易总结

    android 文件操作类(参考链接) http://www.cnblogs.com/menlsh/archive/2013/04/02/2997084.html package com.androi ...

  2. File 文件操作类 大全

    File  文件操作类  大全 许多人都会对文件操作感到很难  我也是  但是一个好的项目中必定会涉及到文件操作的 文件的复制 粘贴  等等等 公司大佬写了 一个文件操作的工具类 感觉还是棒棒的啦   ...

  3. [C#] 常用工具类——文件操作类

    /// <para> FilesUpload:工具方法:ASP.NET上传文件的方法</para> /// <para> FileExists:返回文件是否存在&l ...

  4. 文件操作类CFile

    CFile file; CString str1= L"写入文件成功!"; wchar_t *str2; if (!file.Open(L"Hello.txt" ...

  5. asp.net文件操作类

    /** 文件操作类 **/ #region 引用命名空间 using System; using System.Collections.Generic; using System.Text; usin ...

  6. Ini文件操作类

    /// <summary> /// Ini文件操作类 /// </summary> public class Ini { // 声明INI文件的写操作函数 WritePriva ...

  7. java csv 文件 操作类

    一个CSV文件操作类,功能比较齐全: package tool; import java.io.BufferedReader; import java.io.BufferedWriter; impor ...

  8. Qt5:Qt文件操作类 QFile

    在QT中,操作文件一般不使用C++提供的文件操作类 , 因为操作文件的时候,要用到C++提供的 string 类,而在QT中使用的是Qt自己实现的一个string类 QString .在Qt中使用C+ ...

  9. C# 文件操作类大全

      C# 文件操作类大全 时间:2015-01-31 16:04:20      阅读:1724      评论:0      收藏:0      [点我收藏+] 标签: 1.创建文件夹 //usin ...

随机推荐

  1. jQuery应用实例3:全选、二级联动

    全选: 这里是用JS实现的:http://www.cnblogs.com/xuyiqing/p/8378221.html 如果使用jQuery则会方便很多: <!DOCTYPE html> ...

  2. 精通Linux

    1, linux 启动流程,详细 2,grub , grub2 3, 文件系统,不同文件系统的特性 ext3 , ext 4 ,xfs 4, 不同目录的作用, 分区 5,用户管理 6,文件权限,目录挂 ...

  3. Docker 与 虚拟机比较

    1, 更高效的利用系统资源2,更快速的启动时间3,一致的运行环境4,持续交付(Continuous Integration)和部署(Continuous Delivery) 5, 更轻松的迁移 6,更 ...

  4. C语言判断大小端的几种方法

    在操作系统中,经常会用到判断大小端,很多面试题中也会经常遇到,以前的时候没有总结过,这里总结一下. 以后用到了就直接可以用了. 所谓的大小端,大致的解释意思就是: [大端模式] CPU对操作数的存放方 ...

  5. java main()线程是不是最后一个退出的(相比较main中创建的其他多个线程)

    JVM会在所有的非守护线程(用户线程)执行完毕后退出: main线程是用户线程: 仅有main线程一个用户线程执行完毕,不能决定JVM是否退出,也即是说main线程并不一定是最后一个退出的线程. pu ...

  6. ffmpeg 视频实现各种特效

    直接上命令: //渐入i in.mp4 -vf fade=in:0:90 out.mp4                 //黑白                    i in.mp4 -vf lu ...

  7. 如何从GitHub仓库clone项目

    自己也已经多次接触了git了,但是因为工作用svn,自己平时也很少用git,所以每次都是用的时候可能还可以,等过一段时间再来用的时候,就又忘得差不多了,所以索性自己写个博客,自己记得自己也好懂,而且熟 ...

  8. JConsole观察分析Java程序的运行状态

    Java 自带性能监控工具:监视和管理控制台 jconsole,它可以提供 Java 某个进程的内存.线程.类加载.jvm 概要以及 MBean 等的实时信息. 通过Java SE Developme ...

  9. 微信开放平台创建android应用时怎么获取应用签名

    之前微信开放平台中申请创建应用,没有整理,过了好久,又重新百度,今天索性整理了,以供童鞋们备用. 1.微信开发平台注册申请成开发者账号,就此略过 2.在管理中心选择创建移动应用.按照严格要求填写.上传 ...

  10. 通过 Ansible 创建 Jenkins Server

    创建 CI 流程的第一件事应该是安装 CI 工具,本文以最常见的 Jenkins 为例,介绍如何使用 Ansible 自动安装 Jenkins Server.说明:本文的演示环境为 ubuntu 16 ...