android 文件操作类(参考链接)

http://www.cnblogs.com/menlsh/archive/2013/04/02/2997084.html

package com.android.wang.androidstudio;
import org.apache.http.util.EncodingUtils;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.os.Environment;
import android.os.StatFs;
import android.text.format.Formatter; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; /**
* Created by Administrator on 2016/4/29.
*/
public class FileHelper {
private Context context;
private String SDPATH;//SD卡路径
private String FILESPATH;//文件路径
public FileHelper(Context context)
{
this.context= context;
SDPATH= Environment.getExternalStorageDirectory().getPath();
FILESPATH=this.context.getFilesDir().getPath();
}
public boolean SDCardState(){ //判断SD卡是否可读写
if(Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)){//表示SDCard存在并且可以读写
return true;
}else{
return false;
}
}
public String SDCardPath() {//SDCard路径
if (SDCardState()) {
SDPATH = Environment.getExternalStorageDirectory().getPath();
return SDPATH;
} else {
return null;
}
}
@TargetApi(18)
private String GetSDAvailableSize() {//获取SD可用内存大小
long blockSize=0;
long availableBlocks= 0;
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
if(Build.VERSION.SDK_INT>Build.VERSION_CODES.GINGERBREAD)
{
blockSize = stat.getBlockSizeLong();
availableBlocks = stat.getAvailableBlocksLong();
}
else {
blockSize = stat.getBlockSize();
availableBlocks = stat.getAvailableBlocks();
}
return Formatter.formatFileSize(context, blockSize * availableBlocks);
}
@TargetApi(18)
private String GetSDTotalSize() { //获取SD总内存大小
long blockSize = 0;
long totalBlocks = 0;
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
if(Build.VERSION.SDK_INT>Build.VERSION_CODES.GINGERBREAD)
{
blockSize = stat.getBlockSizeLong();
totalBlocks = stat.getBlockCountLong();
}
else {
blockSize = stat.getBlockSize();
totalBlocks = stat.getBlockCount();
} return Formatter.formatFileSize(context, blockSize * totalBlocks);
}
@TargetApi(18)
private String getRomTotalSize() {//获取机身可用内存
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return Formatter.formatFileSize(context, blockSize * totalBlocks);
}
@TargetApi(18)
private String getRomAvailableSize() { //获得机身可用内存
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return Formatter.formatFileSize(context, blockSize * availableBlocks);
}
public File CreateDirOnSDCard(String dir)//在SD上创建目录
{
if(SDCardState()==true) {
File dirFile = new File(SDPATH + File.separator + dir + File.separator);
dirFile.mkdirs();//创建多级目录创建单级目录用mkdir();
return dirFile;
}
else
{
return null;
}
}
public File CreateFileOnSDCard(String fileName) throws IOException { //SD上创建文件(在类和方法后面用throws,直接抛出异常就要用到throw) File file = new File(SDPATH + File.separator + fileName);
if (!file.exists()) { file.createNewFile(); }
return file;
}
public File CreateFileOnSDCard(String dir,String fileName) throws IOException { //SD上的文件目录下创建文件(在类和方法后面用throws,直接抛出异常就要用到throw) File file = new File(SDPATH + File.separator + dir + File.separator + fileName);
if (!file.exists()) {
file.createNewFile(); }
return file;
}
public boolean fileIsExists(String strFile)//判断文件是否存在
{
try
{
File f=new File(strFile);
if(!f.exists())
{
return false;
}
}
catch (Exception e)
{
return false;
}
return true;
}
public File CreateDirOnRom(String dir)//在ROM上创建文件目录
{
File dirFile = new File(FILESPATH + File.separator+dir);
dirFile.mkdirs();
return dirFile;
}
public File CreateFileOnRom(String fileName)throws IOException//在ROM上创建文件目录
{
File file = new File(FILESPATH + File.separator + fileName);
if (!file.exists()) {
file.createNewFile();
}
return file;
}
public void deleteFile(File file) { //删除文件或文件目录
if (file.exists()) { // 判断文件是否存在
if (file.isFile()) { // 判断是否是文件
file.delete(); // 删除文件;
} else if (file.isDirectory()) { // 否则如果它是一个目录
File files[] = file.listFiles(); // 声明目录下所有的文件 files[];
for (int i = 0; i < files.length; i++) { // 遍历目录下所有的文件
this.deleteFile(files[i]); // 把每个文件 用这个方法进行迭代
}
}
file.delete();
} else {
}
}
public static String InputStreamTOString(InputStream in) throws Exception{
int BUFFER_SIZE=4096;
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] data = new byte[BUFFER_SIZE];
int count = -1;
while((count = in.read(data,0,BUFFER_SIZE)) != -1)
outStream.write(data, 0, count); data = null;
return new String(outStream.toByteArray(),"ISO-8859-1");
}
public static InputStream StringTOInputStream(String in) throws Exception{ ByteArrayInputStream is = new ByteArrayInputStream(in.getBytes("ISO-8859-1"));
return is;
}
public File WriteDataToSDCard(String path, String fileName, String str)
{
File file = null;
OutputStream output = null;
try {
InputStream data = StringTOInputStream(str);
CreateDirOnSDCard(path); //创建目录
file = CreateFileOnSDCard(path,fileName ); //创建文件
output = new FileOutputStream(file);
byte buffer[] = new byte[2*1024]; //每次写2K数据
int temp;
while((temp = data.read(buffer)) != -1 )
{
output.write(buffer,0,temp);
}
output.flush();
} catch (Exception e) {
e.printStackTrace();
}
finally{
try {
output.close(); //关闭数据流操作
} catch (Exception e2) {
e2.printStackTrace();
}
}
return file;
}
public String ReadSDFile1(String fileName) { StringBuffer sb = new StringBuffer();
File file = new File(SDPATH + File.separator+ fileName);
try {
FileInputStream fis = new FileInputStream(file);
int c;
while ((c = fis.read()) != -1) {
sb.append((char) c);
}
fis.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
return sb.toString(); }
public String ReadSDFile2(String fileName) { String sb = new String();
File file = new File(SDPATH + "//" + fileName);
try {
FileInputStream fis = new FileInputStream(file);
int length = fis.available();
byte[] buffer = new byte[length];
fis.read(buffer);
sb = EncodingUtils.getString(buffer, "UTF-8");
fis.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
return sb.toString();
}
//在默认Rom目录下创建文件并写数据(mang.txt,"内容")可在data/data/mang.txt
public void WriteFileOnRom(String fileName,String writestr){
try{
FileOutputStream fout =context.openFileOutput(fileName,context.MODE_PRIVATE);
byte [] bytes = writestr.getBytes();
fout.write(bytes);
fout.close();
}
catch(Exception e){
e.printStackTrace();
}
} //读数据
public String ReadFileOnRom(String fileName) {
String res="";
try{
FileInputStream fin = context.openFileInput(fileName);
int length = fin.available();
byte [] buffer = new byte[length];
fin.read(buffer);
res = EncodingUtils.getString(buffer, "UTF-8");
fin.close();
}
catch(Exception e){
e.printStackTrace();
}
return res; }
//写数据到SD中的文件
public void WriteFileSdcardFile(String fileName,String write_str) throws IOException{
try{
fileName=fileName+SDPATH;
FileOutputStream fout = new FileOutputStream(fileName);
byte [] bytes = write_str.getBytes();
fout.write(bytes);
fout.close();
}
catch(Exception e){
e.printStackTrace();
}
}
//读SD中的文件
public String readFileSdcardFile(String fileName) throws IOException{
String res="";
if(SDCardState()==false)
{
res="NO";
return res;
}
try{
FileInputStream fin = new FileInputStream(fileName);
int length = fin.available();
byte [] buffer = new byte[length];
fin.read(buffer);
res = EncodingUtils.getString(buffer, "UTF-8");
fin.close();
} catch(Exception e){
e.printStackTrace();
}
return res;
}
public String readSDFile(String fileName) throws IOException { File file = new File(fileName);
String res="";
FileInputStream fis = new FileInputStream(file);
int length = fis.available();
byte [] buffer = new byte[length];
fis.read(buffer);
res = EncodingUtils.getString(buffer, "UTF-8");
fis.close();
return res;
}
//写文件
public void writeSDFile(String fileName, String write_str) throws IOException{ File file = new File(fileName); FileOutputStream fos = new FileOutputStream(file); byte [] bytes = write_str.getBytes(); fos.write(bytes); fos.close();
}
}

  

android 文件操作类简易总结的更多相关文章

  1. 大过年的,不下班的,上个Android文件操作类(内部存储和sd卡均可)

    package com.kkdiangame.UI.res; import java.io.ByteArrayOutputStream; import java.io.File; import jav ...

  2. Android FileUtils 文件操作类

    系统路径 Context.getPackageName(); // 用于获取APP的所在包目录 Context.getPackageCodePath(); //来获得当前应用程序对应的apk文件的路径 ...

  3. File 文件操作类 大全

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

  4. Android文件操作工具类(转)

    Android文件操作工具类(转)  2014/4/3 18:13:35  孤独的旅行家  博客园 这个工具类包含Android应用开发最基本的几个文件操作方法,也是我第一次发博客与大家分享自己写的东 ...

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

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

  6. 文件操作类CFile

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

  7. asp.net文件操作类

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

  8. Ini文件操作类

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

  9. java csv 文件 操作类

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

随机推荐

  1. UVA 10003 Cutting Sticks 切木棍 dp

    题意:把一根木棍按给定的n个点切下去,每次切的花费为切的那段木棍的长度,求最小花费. 这题出在dp入门这边,但是我看完题后有强烈的既是感,这不是以前做过的石子合并的题目变形吗? 题目其实就是把n+1根 ...

  2. Hibernate 、多表关联映射-组件关联映射(component)

    组件关联映射可以将一些简小的数据与主题放在一个表中,例如firstName 和LastName这两个结合在一起可以组成一个名字,但是再分别将这两个再建一个表就不太合适了,这个时候可以用到组件关联映射: ...

  3. Minimum Transport Cost(floyd+二维数组记录路径)

    Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  4. 怎样安装pip--python的包管理工具

    pip是python的包管理工具,使用它来安装python的模块很方便. pip支持的操作系统:Unix/Linux, OS X, and Windows. 支持的python版本号:2.6, 2.7 ...

  5. jquery第四期:对象转换的小实例

    为了更清晰的看懂jquery对象是一个数组,我们这一期来改变每一个<li>中的值,在前面加上序号. 代码如下: <!DOCTYPE html PUBLIC "-//W3C/ ...

  6. android实现点击短链接进入应用 并获得整个连接的内容

    例如:我收到一个短信是一个链接:http://www.qq.com/a/b/?, 当我点击以后我要实现的场景是:点击----->有两种情况可供选择:手机中有此应用,跳转到应用:反之,则进入网页. ...

  7. 第10课_dg

    export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 export ORACLE ...

  8. How to select a CRAN mirror in R & use repos parameter(2)

    首次添加功能包需要设定CRAN镜像库: 方法是依据提示:--- Please select a CRAN mirror for use in this session ---,在弹出的窗口中选择CRA ...

  9. 在PreparedStatement中设置空值

    在PreparedStatement中设置空值 分类: Work&amp Study java2009-09-10 09:56 922人阅读 评论(0) 收藏 举报 nulltypes数据库 ...

  10. 使用VC++通过远程进程注入来实现HOOK指定进程的某个API

    前阵子读到一篇关于<HOOK API入门之Hook自己程序的MessageBoxW>的博客,博客地址:http://blog.csdn.net/friendan/article/detai ...