http://blog.csdn.net/fenghome/article/details/5668598
android的文件操作要有权限:
这个类整合了写文件,删除文件,复制文件,搜索文件,判断文件是否存在等,是对一些常用的功能进行封装了。
用于记录和方便以后使用。
android的文件操作要有权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
SD卡下的文件操作:
1、判断SD卡是否插入
这个类整合了写文件,删除文件,复制文件,搜索文件,判断文件是否存在等,是对一些常用的功能进行封装了。
public class FileAdapter {
private static final String TAG = "FileAdaptor";
/**
* 获取指定位置的指定类型的文件
*
* @param path
* 文件夹路径
* @param type
* 文件类型(如“*.jpg;*.png;*.gif”)
* @return
*/
public static void getFileList(String path, String type,
final OnFileListCallback onFileListCallback) {
new AsyncTask<String, String, String>() {
ArrayList<FileInfo> list = new ArrayList<FileInfo>();
@Override
protected void onPostExecute(String result) {
onFileListCallback.SearchFileListInfo(list);
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
String path = params[1].substring(params[1]
.lastIndexOf(".") + 1);
File file = new File(params[0]);
scanSDCard(file,path,list);
return null;
}
}.execute(path, type, "");
}
/**
* 扫描完成后的回调,获取文件列表必须实现
*
* @author cola
*
*/
public interface OnFileListCallback {
/**
* 返回查询的文件列表
* @param list 文件列表
*/
public void SearchFileListInfo(List<FileInfo> list);
}
private static void scanSDCard(File file, String ext, ArrayList<FileInfo> list) {
if (file.isDirectory()) {
File[] files = file.listFiles();
if (files != null) {
for (int i = 0; i < files.length; i++) {
File tmp = files<i>;
if (tmp.isFile()) {
String fileName = tmp.getName();
String filePath = tmp.getName();
if (fileName.indexOf(".") >= 0) {
fileName = fileName.substring(fileName
.lastIndexOf(".") + 1);
if (ext != null && ext.equalsIgnoreCase(fileName)) {
AspLog.i(TAG, filePath);
FileInfo info = new FileInfo();
info.fileName = filePath;
info.filePath = tmp.getAbsolutePath();
list.add(info);
}
}
} else
scanSDCard(tmp, ext, list);
}
}
} else {
if (file.isFile()) {
String fileName = file.getName();
String filePath = file.getName();
if (fileName.indexOf(".") >= 0) {
fileName = fileName
.substring(fileName.lastIndexOf(".") + 1);
if (ext != null && ext.equalsIgnoreCase(fileName)) {
AspLog.i(TAG, filePath);
FileInfo info = new FileInfo();
info.fileName = filePath;
info.filePath = file.getAbsolutePath();
list.add(info);
}
}
}
}
}
/**
* 判断
*/
public static boolean isSdCardExist() {
return Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
}
/**
* 目录相关
*/
public static String getSdCardRootDir() {
return Environment.getExternalStorageDirectory().getPath() + "/";
}
public static String getCacheDir(Context ctx) {
// /data/data/<package name>/cache
return ctx.getCacheDir().getPath() + "/";
}
public static String getFilesDir(Context ctx) {
// /data/data/<package name>/files
return ctx.getFilesDir().getPath() + "/";
}
public static String getSharedPrefDir(Context ctx) {
String path = "/data/data/com.timedee.calendar/shared_prefs/";
mkDir(path);
return path;
}
public static String getSdDataDir() {
return getSdCardRootDir() + "timedee/.data/";
}
public static String getBackupDir() {
return getSdCardRootDir() + "timedee/.backup/";
}
public static boolean mkDir(String path) {
File dir = new File(path);
boolean res = dir.mkdirs();
return res;
}
/**
* 文件操作相关
*/
public static boolean writeFile(String path, InputStream is) {
boolean result = false;
FileOutputStream os = null;
BufferedOutputStream bos = null;
try {
File file = new File(path);
os = new FileOutputStream(file, false);
bos = new BufferedOutputStream(os);
int readLen = 0;
byte[] buf = new byte[1024];
while ((readLen = is.read(buf)) != -1) {
bos.write(buf, 0, readLen);
}
bos.flush();
bos.close();
os.close();
result = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
bos.close();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
public static boolean writeTextFile(String path, String data) {
boolean result = false;
FileWriter fw = null;
try {
File file = new File(path);
fw = new FileWriter(file);
fw.write(data);
fw.close();
result = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
public static InputStream readFile(String path) {
File file = new File(path);
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
} catch (Exception e) {
}
return fis;
}
public static boolean CopyFile(String fromFile, String toFile) {
try {
InputStream fosfrom = new FileInputStream(fromFile);
OutputStream fosto = new FileOutputStream(toFile);
byte bt[] = new byte[4096];
int c;
while ((c = fosfrom.read(bt)) > 0) {
fosto.write(bt, 0, c);
}
fosfrom.close();
fosto.close();
bt = null;
return true;
} catch (Exception ex) {
return false;
}
}
public static boolean CopyAssetFile(Context ctx, String fromFile, String toFile) {
try {
InputStream fosfrom = ctx.getAssets().open(fromFile);
OutputStream fosto = new FileOutputStream(toFile);
byte bt[] = new byte[4096];
int c;
while ((c = fosfrom.read(bt)) > 0) {
fosto.write(bt, 0, c);
}
fosfrom.close();
fosto.close();
bt = null;
return true;
} catch (Exception ex) {
return false;
}
}
public static boolean deleteFile(String path) {
try {
File file = new File(path);
return file.delete();
} catch (Exception ex) {
return false;
}
}
public static boolean isFileExist(String path) {
try {
File file = new File(path);
return file.exists();
} catch (Exception ex) {
}
return false;
}
}
用于记录和方便以后使用。