JAVA文件处理类
来源:互联网 发布:如何筛选重复数据 编辑:程序博客网 时间:2024/06/05 08:04
import java.io.*;import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set;/** * Created by 韩小转 on 2015/11/9 0009. */public class FileUtil { public static final String separator=File.separator; /** * 创建目录 * * @param dir 目录 */ public static void mkdir(String dir) { try { String dirTemp = dir; File dirPath = new File(dirTemp); if (!dirPath.exists()) { dirPath.mkdir(); } } catch (Exception e) { e.printStackTrace(); } } /** * 创建目录 * * @param dir 目录 */ public static void mkdirs(String dir) { try { String dirTemp = dir; File dirPath = new File(dirTemp); if (!dirPath.exists()) { dirPath.mkdirs(); } } catch (Exception e) { e.printStackTrace(); } } /** * 新建文件 * * @param fileName * String 包含路径的文件名 如:E:\phsftp\src\123.txt * @param content * String 文件内容 * */ public static void createNewFile(String fileName, String content) { try { String fileNameTemp = fileName; File filePath = new File(fileNameTemp); if (!filePath.exists()) { filePath.createNewFile(); } FileWriter fw = new FileWriter(filePath); PrintWriter pw = new PrintWriter(fw); String strContent = content; pw.println(strContent); pw.flush(); pw.close(); fw.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 删除文件 * * @param fileName 包含路径的文件名 */ public static void delFile(String fileName) { try { String filePath = fileName; java.io.File delFile = new java.io.File(filePath); if(delFile.exists()) delFile.delete(); } catch (Exception e) { e.printStackTrace(); } } /** * 删除文件夹 * * @param folderPath 文件夹路径 */ public static void delFolder(String folderPath) { try { // 删除文件夹里面所有内容 delAllFile(folderPath); String filePath = folderPath; java.io.File myFilePath = new java.io.File(filePath); // 删除空文件夹 myFilePath.delete(); } catch (Exception e) { //log.error("删除文件夹操作出错"+e.getMessage()); e.printStackTrace(); } } /** * 删除文件夹里面的所有文件 * * @param path 文件夹路径 */ public static void delAllFile(String path) { File file = new File(path); if (!file.exists()) { return; } if (!file.isDirectory()) { return; } String[] childFiles = file.list(); File temp = null; for (int i = 0; i < childFiles.length; i++) { //separator与系统有关的默认名称分隔符 //在UNIX系统上,此字段的值为'/';在Microsoft Windows系统上,它为 '\'。 if (path.endsWith(separator)) { temp = new File(path + childFiles[i]); } else { temp = new File(path + separator + childFiles[i]); } if (temp.isFile()) { temp.delete(); } if (temp.isDirectory()) { delAllFile(path + separator + childFiles[i]);// 先删除文件夹里面的文件 delFolder(path + separator + childFiles[i]);// 再删除空文件夹 } } } /** * 获取文件夹内所有文件 * 只获取一级文件 * hjl * 2017年7月14日17:42:50 * @param src * @return */ public static List<File> getAllFile(String src){ File file = new File(src); if (!file.exists()) { return null; } if (!file.isDirectory()) { return null; } String[] childFiles = file.list(); File temp = null; List<File> list = new ArrayList<>(); for (int i = 0; i < childFiles.length; i++) { if (src.endsWith(separator)) { temp = new File(src + childFiles[i]); } else { temp = new File(src + separator + childFiles[i]); } if (temp.isFile()) { list.add(temp); } } return list; } /** * 复制单个文件 * * @param srcFile * 包含路径的源文件 如:E:/phsftp/src/abc.txt * @param dirDest * 目标文件目录;若文件目录不存在则自动创建 如:E:/phsftp/dest * @throws IOException */ public static void copyFile(String srcFile, String dirDest) { try { FileInputStream in = new FileInputStream(srcFile); mkdirs(dirDest); FileOutputStream out = new FileOutputStream(dirDest+separator+new File(srcFile).getName()); int len; byte buffer[] = new byte[1024]; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } out.flush(); out.close(); in.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 复制文件夹 * * @param oldPath * String 源文件夹路径 如:E:/phsftp/src * @param newPath * String 目标文件夹路径 如:E:/phsftp/dest * @return boolean */ public static void copyFolder(String oldPath, String newPath) { try { // 如果文件夹不存在 则新建文件夹 mkdir(newPath); File file = new File(oldPath); String[] files = file.list(); File temp = null; for (int i = 0; i < files.length; i++) { if (oldPath.endsWith(separator)) { temp = new File(oldPath + files[i]); } else { temp = new File(oldPath + separator + files[i]); } if (temp.isFile()) { FileInputStream input = new FileInputStream(temp); FileOutputStream output = new FileOutputStream(newPath + separator+ (temp.getName()).toString()); byte[] buffer = new byte[1024 * 2]; int len; while ((len = input.read(buffer)) != -1) { output.write(buffer, 0, len); } output.flush(); output.close(); input.close(); } if (temp.isDirectory()) {// 如果是子文件夹 copyFolder(oldPath + separator + files[i], newPath +separator + files[i]); } } } catch (Exception e) { e.printStackTrace(); } } /** * 移动文件到指定目录 * * @param oldPath 包含路径的文件名 如:E:/phsftp/src/ljq.txt * @param newPath 目标文件目录 如:E:/phsftp/dest */ public static void moveFile(String oldPath, String newPath) { copyFile(oldPath, newPath); delFile(oldPath); } /** * 移动文件到指定目录,不会删除文件夹 * * @param oldPath 源文件目录 如:E:/phsftp/src * @param newPath 目标文件目录 如:E:/phsftp/dest */ public static void moveFiles(String oldPath, String newPath) { copyFolder(oldPath, newPath); delAllFile(oldPath); } /** * 移动文件到指定目录,会删除文件夹 * * @param oldPath 源文件目录 如:E:/phsftp/src * @param newPath 目标文件目录 如:E:/phsftp/dest */ public static void moveFolder(String oldPath, String newPath) { copyFolder(oldPath, newPath); delFolder(oldPath); } /* *//** * 解压zip文件 * * @param srcDir * 解压前存放的目录 * @param destDir * 解压后存放的目录 * @throws Exception *//* public static void jieYaZip(String srcDir, String destDir) throws Exception { int leng = 0; byte[] b = new byte[1024*2]; *//** 获取zip格式的文件 **//* File[] zipFiles = new FileFilterByExtension("zip").getFiles(srcDir); if(zipFiles!=null && !"".equals(zipFiles)){ for (int i = 0; i < zipFiles.length; i++) { File file = zipFiles[i]; *//** 解压的输入流 * *//* ZipInputStream zis = new ZipInputStream(new FileInputStream(file)); ZipEntry entry=null; while ((entry=zis.getNextEntry())!=null) { File destFile =null; if(destDir.endsWith(separator)){ destFile = new File(destDir + entry.getName()); }else { destFile = new File(destDir + "/" + entry.getName()); } *//** 把解压包中的文件拷贝到目标目录 * *//* FileOutputStream fos = new FileOutputStream(destFile); while ((leng = zis.read(b)) != -1) { fos.write(b, 0, leng); } fos.close(); } zis.close(); } } } /** * 读取数据 * * @param inSream * @param charsetName * @return * @throws Exception */ public static String readData(InputStream inSream, String charsetName) throws Exception{ ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = -1; while( (len = inSream.read(buffer)) != -1 ){ outStream.write(buffer, 0, len); } byte[] data = outStream.toByteArray(); outStream.close(); inSream.close(); return new String(data, charsetName); } /** * 一行一行读取文件,适合字符读取,若读取中文字符时会出现乱码 * * @param path * @return * @throws Exception */ public static Set<String> readFile(String path) throws Exception{ Set<String> datas=new HashSet<String>(); FileReader fr=new FileReader(path); BufferedReader br=new BufferedReader(fr); String line=null; while ((line=br.readLine())!=null) { datas.add(line); } br.close(); fr.close(); return datas; } /** * 获取文件大小 * @param files * @return */ public static long getAllFileSize(File[] files){ if(files==null||files.length<=0){ return 0; } long size=0; for(int i=0;i<files.length;i++){ size=size+files[i].length(); } return size; } /** * 获取文件大小 * @param path * @return */ @Deprecated public static long getAllFileSize(String path){ File file=new File(path); return getDirSize(file); } /** * 获取文件/文件夹内 所有 大小 * @param file * @return */ public static long getDirSize(File file) { //判断文件是否存在 if (file.exists()) { //如果是目录则递归计算其内容的总大小 if (file.isDirectory()) { File[] children = file.listFiles(); long size = 0; for (File f : children) size += getDirSize(f); return size; } else { long size = file.length(); return size; } } else { //System.out.println("文件或者文件夹不存在,请检查路径是否正确!"); return 0; } } }
阅读全文
0 0
- java处理文件类
- Java文件处理类
- JAVA文件处理类
- Java 文件处理工具类
- [Java学习] Java文件处理类
- Java处理文件路径的类
- flex_文件上传处理JAVA类;
- Java常用工具类五 -- 文件处理相关
- java文件处理源码
- Java 文件的处理
- Java文件处理
- Java处理Zip文件
- java 处理xml文件
- java 大文件处理
- java处理properties文件
- java处理文件
- JAVA文件处理
- java移动处理文件
- learning之组合模式
- HDU1262-寻找素数对
- Java--异常处理机制
- mybatis 嵌套的结果集不能被安全的转为自定义ResultHandler 的解决办法
- codeforces 825 E Minimal Labels
- JAVA文件处理类
- 二叉树中两个节点的最近公共祖先节点
- gcc与g++的区别
- 用Unity做游戏,你需要深入了解一下IL2CPP
- 解决百度地图反复进出偶尔会崩溃的问题
- springboot整合redis,注解方式
- 使用js实时显示北京时间
- C++中友元详解
- JAVA系统剪切板工具类