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卡內(nèi)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;
}
/**
* 檢查擴(kuò)展名甸鸟,得到圖片格式的文件
*
* @param fName 文件名
* @return
*/
@SuppressLint("DefaultLocale")
private static boolean checkIsImageFile(String fName) {
boolean isImageFile = false;
// 獲取擴(kuò)展名
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 要?jiǎng)h除的文件夾或文件名
* @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);
}
}
/**
* 刪除單個(gè)文件
*
* @param filePath$Name 要?jiǎng)h除的文件的文件名
* @return 單個(gè)文件刪除成功返回true,否則返回false
*/
public static boolean deleteSingleFile(String filePath$Name) {
File file = new File(filePath$Name);
// 如果文件路徑所對(duì)應(yīng)的文件存在,并且是一個(gè)文件,則直接刪除
if (file.exists() && file.isFile()) {
if (file.delete()) {
Log.e("--Method--", "Copy_Delete.deleteSingleFile: 刪除單個(gè)文件" + filePath$Name + "成功申尤!");
return true;
} else {
Log.d("FilesUntils", "刪除單個(gè)文件" + filePath$Name + "失敗子眶!");
return false;
}
} else {
Log.d("FilesUntils", "刪除單個(gè)文件失斊倌:" + filePath$Name + "不存在!");
return false;
}
}
/**
* 刪除目錄及目錄下的文件
*
* @param filePath 要?jiǎng)h除的目錄的文件路徑
* @return 目錄刪除成功返回true臭杰,否則返回false
*/
public static boolean deleteDirectory(String filePath) {
// 如果dir不以文件分隔符結(jié)尾粤咪,自動(dòng)添加文件分隔符
if (!filePath.endsWith(File.separator))
filePath = filePath + File.separator;
File dirFile = new File(filePath);
// 如果dir對(duì)應(yīng)的文件不存在,或者不是一個(gè)目錄渴杆,則退出
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;
}
// 刪除當(dāng)前目錄
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)) { //檢測(cè)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)) { //檢測(cè)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轉(zhuǎn)文件保存到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 + "一級(jí)目錄" + File.separator + "二級(jí)目錄" + File.separator + ".PNG");
}
/**
* 讓Gallery相冊(cè)上能馬上看到該圖片
*/
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);
}
}
FileUnitls一個(gè)讀寫安卓文件的類
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門重挑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人棠涮,你說(shuō)我怎么就攤上這事谬哀。” “怎么了故爵?”我有些...
- 文/不壞的土叔 我叫張陵玻粪,是天一觀的道長(zhǎng)隅津。 經(jīng)常有香客問我诬垂,道長(zhǎng),這世上最難降的妖魔是什么伦仍? 我笑而不...
- 正文 為了忘掉前任结窘,我火速辦了婚禮,結(jié)果婚禮上充蓝,老公的妹妹穿的比我還像新娘隧枫。我一直安慰自己,他們只是感情好谓苟,可當(dāng)我...
- 文/花漫 我一把揭開白布官脓。 她就那樣靜靜地躺著,像睡著了一般涝焙。 火紅的嫁衣襯著肌膚如雪卑笨。 梳的紋絲不亂的頭發(fā)上,一...
- 那天仑撞,我揣著相機(jī)與錄音赤兴,去河邊找鬼。 笑死隧哮,一個(gè)胖子當(dāng)著我的面吹牛桶良,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沮翔,決...
- 文/蒼蘭香墨 我猛地睜開眼陨帆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起疲牵,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤岸浑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后瑰步,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矢洲,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年缩焦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了读虏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
- 正文 年R本政府宣布,位于F島的核電站嵌赠,受9級(jí)特大地震影響塑荒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜姜挺,卻給世界環(huán)境...
- 文/蒙蒙 一齿税、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧炊豪,春花似錦凌箕、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至缺虐,卻和暖如春芜壁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背志笼。 一陣腳步聲響...
- 正文 我出身青樓腰涧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親紊浩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子窖铡,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 最近迷上一本書——《夜航船》箍铲,張岱所著雇卷,它是三百年前的百科全書,用現(xiàn)在的話來(lái)說(shuō)就是古代文學(xué)常識(shí)(看這本書的時(shí)候經(jīng)常...
- 明天我要到職院去給14歲到19歲的女生講課翘瓮,有四百多名學(xué)生參加贮折,是講青春期的健康教育。這方面的內(nèi)容我講過多次资盅,基本...