FileUnitls一个读写安卓文件的类
2019-10-28 本文已影响0人
cc_And
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Environment;
import android.util.Log;
import android.widget.Toast;
import com.blankj.utilcode.util.FileUtils;
import com.bw.system.daomain.HomeAppBean;
import com.bw.system.daomain.SignatureBean;
import com.bw.system.daomain.SignaturePersonBean;
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.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OptionalDataException;
import java.io.OutputStream;
import java.io.StreamCorruptedException;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.List;
/*
*@Auther:CC
*@Date: 2019/10/19
*@Time:15:55
*@Description:${文件工具类}
* */public class FilesUntils {
/**
* 获取文件夹下有图片的集合
*
* @return
*/
public static List<String> getImagePathFromSD(String filePath) {
// 图片列表
List<String> imagePathList = new ArrayList<String>();
// 得到sd卡内image文件夹的路径 File.separator(/)
//String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/leader/signature";
// 得到该路径文件夹下所有的文件
File fileAll = new File(filePath);
File[] files = fileAll.listFiles();
// 将所有的文件存入ArrayList中,并过滤所有图片格式的文件
for (int i = 0; i < files.length; i++) {
File file = files[i];
if (checkIsImageFile(file.getPath())) {
imagePathList.add(file.getPath());
}
}
// 返回得到的图片列表
return imagePathList;
}
/**
* 检查扩展名,得到图片格式的文件
*
* @param fName 文件名
* @return
*/
@SuppressLint("DefaultLocale")
private static boolean checkIsImageFile(String fName) {
boolean isImageFile = false;
// 获取扩展名
String FileEnd = fName.substring(fName.lastIndexOf(".") + 1,
fName.length()).toLowerCase();
if (FileEnd.equals("jpg") || FileEnd.equals("png") || FileEnd.equals("gif")
|| FileEnd.equals("jpeg") || FileEnd.equals("bmp")) {
isImageFile = true;
} else {
isImageFile = false;
}
return isImageFile;
}
/**
* 删除文件,可以是文件或文件夹
*
* @param delFile 要删除的文件夹或文件名
* @return 删除成功返回true,否则返回false
*/
public static boolean delete(String delFile) {
File file = new File(delFile);
if (!file.exists()) {
Log.d("FilesUntils", "删除文件失败:" + delFile + "不存在!");
return false;
} else {
if (file.isFile())
return deleteSingleFile(delFile);
else
return deleteDirectory(delFile);
}
}
/**
* 删除单个文件
*
* @param filePath$Name 要删除的文件的文件名
* @return 单个文件删除成功返回true,否则返回false
*/
public static boolean deleteSingleFile(String filePath$Name) {
File file = new File(filePath$Name);
// 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
if (file.exists() && file.isFile()) {
if (file.delete()) {
Log.e("--Method--", "Copy_Delete.deleteSingleFile: 删除单个文件" + filePath$Name + "成功!");
return true;
} else {
Log.d("FilesUntils", "删除单个文件" + filePath$Name + "失败!");
return false;
}
} else {
Log.d("FilesUntils", "删除单个文件失败:" + filePath$Name + "不存在!");
return false;
}
}
/**
* 删除目录及目录下的文件
*
* @param filePath 要删除的目录的文件路径
* @return 目录删除成功返回true,否则返回false
*/
public static boolean deleteDirectory(String filePath) {
// 如果dir不以文件分隔符结尾,自动添加文件分隔符
if (!filePath.endsWith(File.separator))
filePath = filePath + File.separator;
File dirFile = new File(filePath);
// 如果dir对应的文件不存在,或者不是一个目录,则退出
if ((!dirFile.exists()) || (!dirFile.isDirectory())) {
Log.d("FilesUntils", "删除目录失败:" + filePath + "不存在!");
return false;
}
boolean flag = true;
// 删除文件夹中的所有文件包括子目录
File[] files = dirFile.listFiles();
for (File file : files) {
// 删除子文件
if (file.isFile()) {
flag = deleteSingleFile(file.getAbsolutePath());
if (!flag)
break;
}
// 删除子目录
else if (file.isDirectory()) {
flag = deleteDirectory(file
.getAbsolutePath());
if (!flag)
break;
}
}
if (!flag) {
Log.d("FilesUntils", "删除目录失败!");
return false;
}
// 删除当前目录
if (dirFile.delete()) {
Log.e("--Method--", "Copy_Delete.deleteDirectory: 删除目录" + filePath + "成功!");
return true;
} else {
Log.d("FilesUntils", "删除目录:" + filePath + "失败!");
return false;
}
}
/**
* 读取sd卡文件里的集合
*
* @param fileName 文件名
* @return
*/
@SuppressWarnings("unchecked")
public static List<HomeAppBean> readListFromSdCard(String fileName) {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { //检测sd卡是否存在
List<HomeAppBean> list;
File sdCardDir = Environment.getExternalStorageDirectory();
File sdFile = new File(sdCardDir, fileName);
try {
FileInputStream fis = new FileInputStream(sdFile);
ObjectInputStream ois = new ObjectInputStream(fis);
list = (List<HomeAppBean>) ois.readObject();
fis.close();
ois.close();
return list;
} catch (StreamCorruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (OptionalDataException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
} else {
return null;
}
}
/**
* 读取文件
*
* @param fileName
* @return
*/
public static List<SignaturePersonBean> readTemporaryList(String fileName) {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { //检测sd卡是否存在
List<SignaturePersonBean> list;
File sdCardDir = Environment.getExternalStorageDirectory();
File sdFile = new File(sdCardDir, fileName);
try {
FileInputStream fis = new FileInputStream(sdFile);
ObjectInputStream ois = new ObjectInputStream(fis);
list = (List<SignaturePersonBean>) ois.readObject();
fis.close();
ois.close();
return list;
} catch (StreamCorruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (OptionalDataException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
} else {
return null;
}
}
/**
* 写入集合到Sd卡文件
*
* @param fileName
* @param list
* @return
*/
public static boolean writeListIntoSDcard(String fileName, List<HomeAppBean> list) {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File sdCardDir = Environment.getExternalStorageDirectory();//获取sd卡目录
File sdFile = new File(sdCardDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(sdFile);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(list);//写入
fos.close();
oos.close();
return true;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
} else {
return false;
}
}
/**
* 保存文件到集合Sd卡
*
* @param fileName
* @param list
* @return
*/
public static boolean saveListtoSDcard(String fileName, List<SignaturePersonBean> list) {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File sdCardDir = Environment.getExternalStorageDirectory();//获取sd卡目录
File sdFile = new File(sdCardDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(sdFile);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(list);//写入
fos.close();
oos.close();
return true;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
} else {
return false;
}
}
/**
* bipmap转文件保存到sd卡
*
* @param bitmap
* @throws IOException
*/
private void saveBitmap(Bitmap bitmap, String Filepath,Context context) throws IOException {
File file = new File(Filepath);
if (file.exists()) {
file.delete();
}
FileOutputStream out;
try {
out = new FileOutputStream(file);
if (bitmap.compress(Bitmap.CompressFormat.PNG, 100, out)) {
out.flush();
out.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
scanPhoto(context, Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "一级目录" + File.separator + "二级目录" + File.separator + ".PNG");
}
/**
* 让Gallery相册上能马上看到该图片
*/
private static void scanPhoto(Context ctx, String imgFileName) {
Intent mediaScanIntent = new Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File file = new File(imgFileName);
Uri contentUri = Uri.fromFile(file);
mediaScanIntent.setData(contentUri);
ctx.sendBroadcast(mediaScanIntent);
}
}