New file |
| | |
| | | package com.hdl.linkpm.sdk.utils; |
| | | |
| | | import android.content.Context; |
| | | import android.content.res.AssetManager; |
| | | |
| | | import java.io.BufferedOutputStream; |
| | | import java.io.BufferedReader; |
| | | import java.io.BufferedWriter; |
| | | import java.io.File; |
| | | import java.io.FileOutputStream; |
| | | import java.io.FileWriter; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.io.InputStreamReader; |
| | | |
| | | /** |
| | | * Created by hxb on 2022/2/24. |
| | | */ |
| | | public class HDLFileUtils { |
| | | |
| | | /** |
| | | * 创建文件夹 |
| | | * |
| | | * @param filesPath |
| | | * @return |
| | | */ |
| | | public static boolean createOrExistsPrivateFolder(String filesPath) { |
| | | File dir = new File(filesPath); |
| | | return createOrExistsFolder(dir); |
| | | } |
| | | |
| | | public static String getJson(String fileName, Context context) { |
| | | //将json数据变成字符串 |
| | | StringBuilder stringBuilder = new StringBuilder(); |
| | | try { |
| | | //获取assets资源管理器 |
| | | AssetManager assetManager = context.getAssets(); |
| | | //通过管理器打开文件并读取 |
| | | BufferedReader bf = new BufferedReader(new InputStreamReader( |
| | | assetManager.open(fileName))); |
| | | String line; |
| | | while ((line = bf.readLine()) != null) { |
| | | stringBuilder.append(line); |
| | | } |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return stringBuilder.toString(); |
| | | } |
| | | |
| | | /** |
| | | * 创建文件夹 |
| | | * |
| | | * @param file |
| | | * @return |
| | | */ |
| | | public static boolean createOrExistsFolder(File file) { |
| | | if (file == null) |
| | | return false; |
| | | boolean result = false; |
| | | |
| | | if (isFileExists(file) && isDirectory(file)) { |
| | | // 如果file存在且是文件夹,返回true |
| | | return true; |
| | | } |
| | | // 如果文件夹不存在,创建文件夹 |
| | | if (file.mkdirs()) { |
| | | // 创建成功返回true |
| | | result = true; |
| | | } else { |
| | | // 创建失败返回false |
| | | result = false; |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | public static boolean writeFile(String path, InputStream inputStream) { |
| | | FileOutputStream fop = null; |
| | | |
| | | try { |
| | | File file = new File(path); |
| | | fop = new FileOutputStream(file); |
| | | |
| | | if (!file.exists()) { |
| | | file.createNewFile(); |
| | | } |
| | | |
| | | byte[] inBytes = new byte[1024*5]; |
| | | int len = 0; |
| | | while (0 < (len = inputStream.read(inBytes, 0, inBytes.length))) { |
| | | fop.write(inBytes, 0, len); |
| | | fop.flush(); |
| | | } |
| | | return true; |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } finally { |
| | | try { |
| | | if (fop != null) { |
| | | fop.close(); |
| | | } |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | try { |
| | | if (inputStream != null) { |
| | | inputStream.close(); |
| | | } |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 文件是否存在 |
| | | * |
| | | * @param file |
| | | * @return |
| | | */ |
| | | public static boolean isFileExists(File file) { |
| | | if (file == null) |
| | | return false; |
| | | return file.exists(); |
| | | } |
| | | |
| | | /** |
| | | * 文件夹是否存在 |
| | | * |
| | | * @param file |
| | | * @return |
| | | */ |
| | | public static boolean isDirectory(File file) { |
| | | if (file == null) |
| | | return false; |
| | | return file.isDirectory(); |
| | | } |
| | | public static void byteToFile(byte[] buf, String filePath, String fileName) { |
| | | BufferedOutputStream bos = null; |
| | | FileOutputStream fos = null; |
| | | File file; |
| | | try { |
| | | createOrExistsPrivateFolder(filePath); |
| | | file = new File(filePath + File.separator + fileName); |
| | | fos = new FileOutputStream(file); |
| | | bos = new BufferedOutputStream(fos); |
| | | bos.write(buf); |
| | | } catch (Exception ignored) { |
| | | } finally { |
| | | if (bos != null) { |
| | | try { |
| | | bos.close(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | if (fos != null) { |
| | | try { |
| | | fos.close(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 删除文件,可以是单个文件或文件夹 |
| | | * |
| | | * @param fileName |
| | | * 待删除的文件名 |
| | | * @return 文件删除成功返回true,否则返回false |
| | | */ |
| | | public static boolean delete(String fileName) { |
| | | File file = new File(fileName); |
| | | if (!file.exists()) { |
| | | System.out.println("删除文件失败:" + fileName + "文件不存在"); |
| | | return false; |
| | | } else { |
| | | if (file.isFile()) { |
| | | |
| | | return deleteFile(fileName); |
| | | } else { |
| | | return deleteDirectory(fileName); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 删除单个文件 |
| | | * |
| | | * @param file 被删除文件 |
| | | * @return 单个文件删除成功返回true,否则返回false |
| | | */ |
| | | public static boolean deleteFile(File file) { |
| | | if (file.isFile() && file.exists()) { |
| | | file.delete(); |
| | | System.out.println("删除单个文件" + file.getName() + "成功!"); |
| | | return true; |
| | | } else { |
| | | System.out.println("删除单个文件" + file.getName() + "失败!"); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 删除单个文件 |
| | | * |
| | | * @param fileName |
| | | * 被删除文件的文件名 |
| | | * @return 单个文件删除成功返回true,否则返回false |
| | | */ |
| | | public static boolean deleteFile(String fileName) { |
| | | File file = new File(fileName); |
| | | if (file.isFile() && file.exists()) { |
| | | file.delete(); |
| | | System.out.println("删除单个文件" + fileName + "成功!"); |
| | | return true; |
| | | } else { |
| | | System.out.println("删除单个文件" + fileName + "失败!"); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 删除目录(文件夹)以及目录下的文件 |
| | | * |
| | | * @param dir |
| | | * 被删除目录的文件路径 |
| | | * @return 目录删除成功返回true,否则返回false |
| | | */ |
| | | public static boolean deleteDirectory(String dir) { |
| | | // 如果dir不以文件分隔符结尾,自动添加文件分隔符 |
| | | if (!dir.endsWith(File.separator)) { |
| | | dir = dir + File.separator; |
| | | } |
| | | File dirFile = new File(dir); |
| | | // 如果dir对应的文件不存在,或者不是一个目录,则退出 |
| | | if (!dirFile.exists() || !dirFile.isDirectory()) { |
| | | System.out.println("删除目录失败" + dir + "目录不存在!"); |
| | | return false; |
| | | } |
| | | boolean flag = true; |
| | | // 删除文件夹下的所有文件(包括子目录) |
| | | File[] files = dirFile.listFiles(); |
| | | for (int i = 0; i < files.length; i++) { |
| | | // 删除子文件 |
| | | if (files[i].isFile()) { |
| | | flag = deleteFile(files[i].getAbsolutePath()); |
| | | if (!flag) { |
| | | break; |
| | | } |
| | | } |
| | | // 删除子目录 |
| | | else { |
| | | flag = deleteDirectory(files[i].getAbsolutePath()); |
| | | if (!flag) { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (!flag) { |
| | | System.out.println("删除目录失败"); |
| | | return false; |
| | | } |
| | | |
| | | // 删除当前目录 |
| | | if (dirFile.delete()) { |
| | | System.out.println("删除目录" + dir + "成功!"); |
| | | return true; |
| | | } else { |
| | | System.out.println("删除目录" + dir + "失败!"); |
| | | return false; |
| | | } |
| | | } |
| | | // 删除文件夹 |
| | | // param folderPath 文件夹完整绝对路径 |
| | | |
| | | public static void delFolder(String folderPath) { |
| | | try { |
| | | delAllFile(folderPath); // 删除完里面所有内容 |
| | | String filePath = folderPath; |
| | | filePath = filePath.toString(); |
| | | File myFilePath = new File(filePath); |
| | | myFilePath.delete(); // 删除空文件夹 |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | // 删除指定文件夹下所有文件 |
| | | // param path 文件夹完整绝对路径 |
| | | public static boolean delAllFile(String path) { |
| | | boolean flag = false; |
| | | File file = new File(path); |
| | | if (!file.exists()) { |
| | | return flag; |
| | | } |
| | | if (!file.isDirectory()) { |
| | | return flag; |
| | | } |
| | | String[] tempList = file.list(); |
| | | File temp = null; |
| | | for (int i = 0; i < tempList.length; i++) { |
| | | if (path.endsWith(File.separator)) { |
| | | temp = new File(path + tempList[i]); |
| | | } else { |
| | | temp = new File(path + File.separator + tempList[i]); |
| | | } |
| | | if (temp.isFile()) { |
| | | temp.delete(); |
| | | } |
| | | if (temp.isDirectory()) { |
| | | delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件 |
| | | delFolder(path + "/" + tempList[i]);// 再删除空文件夹 |
| | | flag = true; |
| | | } |
| | | } |
| | | return flag; |
| | | } |
| | | } |
| | | |