android 文件操作类简易总结
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 文件操作类简易总结的更多相关文章
- 大过年的,不下班的,上个Android文件操作类(内部存储和sd卡均可)
package com.kkdiangame.UI.res; import java.io.ByteArrayOutputStream; import java.io.File; import jav ...
- Android FileUtils 文件操作类
系统路径 Context.getPackageName(); // 用于获取APP的所在包目录 Context.getPackageCodePath(); //来获得当前应用程序对应的apk文件的路径 ...
- File 文件操作类 大全
File 文件操作类 大全 许多人都会对文件操作感到很难 我也是 但是一个好的项目中必定会涉及到文件操作的 文件的复制 粘贴 等等等 公司大佬写了 一个文件操作的工具类 感觉还是棒棒的啦 ...
- Android文件操作工具类(转)
Android文件操作工具类(转) 2014/4/3 18:13:35 孤独的旅行家 博客园 这个工具类包含Android应用开发最基本的几个文件操作方法,也是我第一次发博客与大家分享自己写的东 ...
- [C#] 常用工具类——文件操作类
/// <para> FilesUpload:工具方法:ASP.NET上传文件的方法</para> /// <para> FileExists:返回文件是否存在&l ...
- 文件操作类CFile
CFile file; CString str1= L"写入文件成功!"; wchar_t *str2; if (!file.Open(L"Hello.txt" ...
- asp.net文件操作类
/** 文件操作类 **/ #region 引用命名空间 using System; using System.Collections.Generic; using System.Text; usin ...
- Ini文件操作类
/// <summary> /// Ini文件操作类 /// </summary> public class Ini { // 声明INI文件的写操作函数 WritePriva ...
- java csv 文件 操作类
一个CSV文件操作类,功能比较齐全: package tool; import java.io.BufferedReader; import java.io.BufferedWriter; impor ...
随机推荐
- THP Transparent HugePages 相关知识与关闭
近期遇到个LINUX系统内存比較大.未开 HugePages,业务有变化导致ORACLE连接数剧增至上千个,PageTables达到上百G.导致内存不足系统HANG住的案例. 因此须要开启 HugeP ...
- 【Andord真】SlideMenu+ViewPagerIndictor双滑动边栏+滑动导航条
采取SlideMenu达到的效果侧边栏: 间 setContentView是设置主背景的布局 setBehindContentView是设置左边菜单的布局 setSecondaryMenu是设置右边的 ...
- C#中使用日志类,添加dll时出现错误
警告 1 未能解析引用的程序集 “log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, proces ...
- T-SQL变量
T-SQL中变量分为全局变量和局部变量,分别使用@@和@前缀. 全局变量 常用的全局变量有@@VERSION .@@IDENTITY.@@ERROR.@@ROWCOUNT 用法 select @@VE ...
- bootstrap注意事项(五)表单
1.基本实例 单独的表单控件会被自动赋予一些全局样式.所有设置了 .form-control类的 <input>.<textarea> 和 <select> 元素都 ...
- SSIS之数据转换用法
当SSIS报错为:“无法在unicode和非unicode字符串数据类型之间转换”,可以考虑用数据转换器实现,很简单,如下图: 第一步,找到数据转换器: 第二步,编辑数据转换器: 第三步:编辑目标映射 ...
- WinForm DataGridView看似刷新的问题
昨天同事winform遇到一个问题, 窗体上有一个时间控件,和一堆文本,下拉控件,时间控件是每秒都在动态走的 窗体下发一个DataGridView 控件显示保存后的数据 保存的数据库是在另一台机器B上 ...
- Java RMI 学习笔记
概况 功能:提供了客户辅助对象和服务辅助对象,为客户辅助对象创建和服务辅助对象形同的方法. 优点:客户不必写任何网络或I/O代码,调用远程方法就和运行在客户自己的本地JVM上对对象进行的正常方法一样. ...
- java.lang.NoClassDefFoundError: Could not initialize class net.sf.json.util.JSONUtils
页面报错: root: java.lang.NoClassDefFoundError: Could not initialize class net.sf.json.util.JSONUtils 出错 ...
- [转]取代cookie的网站追踪技术:”帆布指纹识别”初探
[前言] 一般情况下,网站或者广告联盟都会非常想要一种技术方式可以在网络上精确定位到每一个个体,这样可以通过收集这些个体的数据,通过分析后更加精准的去推送广告(精准化营销)或其他有针对性的一些活动.C ...