package com.utils; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.io.Reader; import java.io.UnsupportedEncodingException; import java.nio.channels.FileChannel; import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipException; import java.util.zip.ZipFile; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * XML操作帮助类 文件操作帮助类 * @author xinjiatao * */ public class XmlUtil { /** * 将Dom 读到另一个文件 * * @param dom * @param ifile * @return */ public static int writeXMLPretty(Document dom, String ifile) { int retVar = 1; try { OutputStream out; File file = new File(ifile); if (!file.exists()) { if (!(file.getParentFile().exists()) && !(file.getParentFile().mkdirs())) { return 1; } } OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); out = new FileOutputStream(file); XMLWriter wr = new XMLWriter(out, format); wr.write(dom); wr.close(); retVar = 0; } catch (FileNotFoundException fe) { fe.printStackTrace(); } catch (UnsupportedEncodingException ue) { ue.printStackTrace(); } catch (IOException ie) { ie.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return retVar; } /** * 在一个XML中, 删除指定的节点 * * @param elmDevice * 一个xml节点 * @param elmDel * 要删除的一个节点 */ public static void selectDelXmlNode(Element elmDevice, Element elmDel) { for (Iterator it = elmDevice.elementIterator(); it.hasNext();) { Element element = (Element) it.next(); int attCount = element.attributeCount(); int passCount = elmDel.attributeCount(); if (attCount == passCount) { int count = 0; for (int k = 0; k < attCount; k++) { String devName = element.attribute(k).getName(); String devVal = element.attribute(k).getValue(); // 要删除的节点 String passName = element.attribute(k).getName(); String passVal = element.attribute(k).getValue(); if (devName.equals(passName) && devVal.equals(passVal) && attCount == passCount) { count++; } } if (count == passCount) { Element e = element.getParent(); e.remove(element); } } selectDelXmlNode(element, elmDel); } } /** * 读取XML返回Dom * * @param reader * @return */ public static Document readXml(Reader reader) { SAXReader sreader = new SAXReader(); try { return sreader.read(reader); } catch (DocumentException de) { de.printStackTrace(); return null; } catch (Exception e) { e.printStackTrace(); return null; } finally { try { reader.close(); } catch (IOException e2) { e2.printStackTrace(); } } } /** * 修改XML节点 * * @param elmDevice * 要修改的XML * @param elmOld * 之前的XML 节点 * @param newElm * 修改后的XML节点 */ public static void selectModifyXmlNode(Element elmDevice, Element elmOld, Element newElm) { for (Iterator it = elmDevice.elementIterator(); it.hasNext();) { Element element = (Element) it.next(); int attCount = element.attributeCount(); int passCount = elmOld.attributeCount(); int newCount = newElm.attributeCount(); if (attCount == passCount && passCount == newCount) { int count = 0; for (int k = 0; k < attCount; k++) { String devName = element.attribute(k).getName(); String devVal = element.attribute(k).getValue(); String passName = elmOld.attribute(k).getName(); String passVal = elmOld.attribute(k).getValue(); if (devName.equals(passName) && devVal.equals(passVal) && attCount == passCount) { count++; } } if (count == passCount) { for (int i = 0; i < element.attributeCount(); i++) { for (int j = 0; j < newElm.attributeCount(); j++) { if (element.attribute(i).getName() .equals(newElm.attribute(j).getName())) { element.attribute(i).setValue( newElm.attribute(j).getValue()); } } } } } selectModifyXmlNode(element, elmOld, newElm); } } /** * 新建文件并添加内容 * * @param filePathAndName * 文件名称及地址 如:c:/test.txt * @param fileContent * 文件的内容 */ public static void newFile(String filePathAndName, String fileContent) { try { String filePath = filePathAndName; filePath = filePath.toString(); File myFilePath = new File(filePath); if (!myFilePath.exists()) { if (myFilePath.getParentFile().mkdirs()) { myFilePath.createNewFile(); } } else { //如果存在就删除文件 // FileOperate.delFile(filePath); myFilePath.delete(); } FileWriter resultFile = new FileWriter(myFilePath); PrintWriter myFile = new PrintWriter(resultFile); String strCountent = fileContent; myFile.println(strCountent); resultFile.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 新建目录 * @param folderPath 如c:/f.txt */ public static void newFolder(String folderPath){ try { String filePath = folderPath; filePath = filePath.toString(); File myFilePath = new File(filePath); if(!myFilePath.exists()){ myFilePath.mkdir(); } } catch (Exception e) { e.printStackTrace(); } } /** * 删除文件 * @param filePathAndName 文件路径及名称 如:C:/f.txt * @return */ public static boolean delFile(String filePathAndName){ try { String filePath = filePathAndName; filePath = filePath.toString(); File myDelFile = new File(filePath); return myDelFile.delete(); } catch (Exception e) { e.printStackTrace(); return false; } } /** * 删除文件夹 * @param folderPath 文件夹的完整路径 如 c:/a * @return */ public static boolean delFolder(String folderPath){ try { delAllFile(folderPath);//删除里面的文件 String filePath = folderPath; filePath = filePath.toString(); File myFilePath = new File(filePath); return myFilePath.delete(); } catch (Exception e) { e.printStackTrace(); return false; } } /** * 删除指定文件夹下的全部文件 * @param path */ public static void delAllFile(String path){ File file = new File(path); if(!file.exists()){ return ; } if(!file.isDirectory()){ return ; } 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 + File.separator + tempList[i]); delFolder(path + File.separator + tempList[i]); } } } /** * 在文件中查找字符 所在的行 * @param filePath 文件的路径 * @param charName 要查找的字符 * @return */ public static int searchCharacter(String filePath,String charName){ BufferedReader inf; int count = -1; try { inf = new BufferedReader(new FileReader(filePath)); String s = new String(); int findit = -1; try { while((s = inf.readLine()) != null && findit < 0){ findit = s.indexOf(charName); count ++; } inf.close(); } catch (Exception e) { e.printStackTrace(); } } catch (Exception e1) { e1.printStackTrace(); } return count; } /** * 在文件的指定位置插入字符 * @param filePath 文件的路径 * @param insertCharName 将要插入的字符 * @param lineNumber 行号 */ public static void insertCharacter(String filePath,String insertCharName, int lineNumber){ //临时文件 File outFile; try { outFile = File.createTempFile("name", ".tmp"); File inFile = new File(filePath); //输入 FileInputStream fis = new FileInputStream(outFile); BufferedReader in = new BufferedReader(new InputStreamReader(fis)); //输出 FileOutputStream fos = new FileOutputStream(outFile); PrintWriter out = new PrintWriter(fos); //保存一行数据 String thisLine; //行号从 1 开始 int i= 1; while((thisLine = in.readLine())!= null){ //如果行号等于目标行,则输出要插入的数据 if(i == lineNumber){ out.println(insertCharName); } //输出读取到的数据 out.println(thisLine); //行号增加 i++; } out.flush(); out.close(); in.close(); //删除原始文件 inFile.delete(); //把临时文件改名为原文件名 outFile.renameTo(inFile); } catch (Exception e) { e.printStackTrace(); } } /** * 拷贝文件 * @param oldPath 老的文件路径 * @param newPath 新的文件 路径 * @param override */ public static void copyFile(String oldPath,String newPath,boolean override){ File oldfile = new File(oldPath); File df = new File(newPath); //如果文件存在,且不进行覆盖,则直接返回 if(!override && df.exists()){ return ; } //如果目标路径不存在 ,则创建 File ppath = new File(df.getParent()); if(!ppath.exists()){ ppath.mkdirs(); } if(oldfile.exists()){//文件存在时 FileChannel inChannel = null; FileChannel outChannel = null; try { inChannel = new FileInputStream(oldfile).getChannel(); outChannel = new FileOutputStream(df).getChannel(); inChannel.transferTo(0, inChannel.size(), outChannel); } catch (IOException e) { e.printStackTrace(); }finally{ try { if(inChannel != null) inChannel.close(); if(outChannel != null) outChannel.close(); } catch (IOException e2) { e2.printStackTrace(); } } } } /** * 拷贝目录 * @param oldPath * @param newPath * @return */ public static void copyFolder(File oldPath,String newPath){ try { (new File(newPath)).mkdirs(); //如果文件夹不存在,则建立新文件夹 String[] file = oldPath.list(); File temp = null; for(int i=0;i<file.length;i++){ temp = new File(oldPath,file[i]); if(temp.isFile()){ FileInputStream input = new FileInputStream(temp); FileOutputStream output = new FileOutputStream(newPath + File.separator + (temp.getName()).toString()); byte[] b = new byte[1024 * 5]; int len; while((len = input.read(b)) != -1){ output.write(b, 0, len); } output.flush(); output.close(); input.close(); if(temp.isDirectory()){//如果是子文件夹 copyFolder(new File(oldPath + File.separator + file[i]),newPath + File.separator + file[i]); } } } } catch (Exception e) { e.printStackTrace(); } } /** * 取指定目录下的所有文件列表,包括子目录 * @param baseDir 指定的目录 * @return */ public static List<File> getSubFiles(File baseDir){ List<File> ret = new ArrayList<File>(); File[] tmp = baseDir.listFiles(); for(int i=0;i<tmp.length;i++){ if(tmp[i].isFile()) ret.add(tmp[i]); if(tmp[i].isDirectory()) ret.addAll(getSubFiles(tmp[i])); } return ret; } /** * 给定根目录,返回一个文件名对于该根目录的相对路径,用于zip文件中的路径 * @param baseDir 根目录 * @param realFileName 实际文件名 * @return */ public static String getAbsFileName(String baseDir,File realFileName){ if(baseDir.equals(realFileName.getAbsolutePath())){ return baseDir; } File real = realFileName; File base = new File(baseDir); String ret = real.getName(); while(true){ real = real.getParentFile(); if(real == null){ break; } if(real.equals(base)){ break; }else{ ret = real.getName() + File.separator + ret; } } return ret; } /** * 缩压缩功能,将ZIP_FILENAME文件解压缩到ZIP_DIR目录下 * @param zipFile * @param destDir * @throws Exception * @throws IOException */ public static void upZipFile(File zipFile,String destDir) throws Exception, IOException{ ZipFile zfile = new ZipFile(zipFile); Enumeration<?> zList = zfile.entries(); ZipEntry ze = null; byte[] buf = new byte[1024]; while(zList.hasMoreElements()){ ze = (ZipEntry)zList.nextElement(); if(ze.isDirectory()){ File f= new File(destDir + ze.getName()); f.mkdirs(); continue; } OutputStream os = new BufferedOutputStream(new FileOutputStream(getRealFileName(destDir,ze.getName()))); InputStream is = new BufferedInputStream(zfile.getInputStream(ze)); int readLen = 0; while((readLen = is.read(buf,0,1024))!= -1){ os.write(buf, 0, readLen); } is.close(); os.close(); } zfile.close(); } /** * 拷贝全部文件到指定目录 * @param path * @param dest * @param pattern * @param reversed * @param override */ public static void copyAllFileTo(String path,String dest,String pattern,boolean reversed,boolean override){ File file = new File(path); if(!file.exists()){ return ; } if(!file.isDirectory()){ return ; } String[] tempList = file.list(); File temp = null; for(int i=0;i<tempList.length;i++){ if(path.endsWith(File.separator)){ temp = new File(path + temp); }else{ temp = new File(path + File.separator + tempList[i]); } if(temp.isFile()){ String destf = dest + File.separator +temp.getName(); if(reversed && !temp.getName().matches(pattern)){ copyFile(temp.getAbsolutePath(), destf, override); }else if(!reversed && temp.getName().matches(pattern)){ copyFile(temp.getAbsolutePath(), destf, override); } } if(temp.isDirectory()){ copyAllFileTo(path + File.separator +tempList[i],dest,pattern,reversed,override); } } } }
相关推荐
file_util.py
本篇将详细解读一个名为“cw-util-file-encryptdecrypt.rar”的自开发文件加密解密工具,它采用了当前广泛使用的加密解密方法,适用于各类项目集成,并附带了具体的测试方案,旨在为用户提供高效且安全的数据保护...
BitVector CookieUtil DES FileUtil HttpUtil ImageFile JavaScriptString JsonHelper StringUtil Thumbnail Utils WebFileInfo
3. File Util:处理文件读写、文件夹创建、文件压缩和解压等操作,方便开发者进行本地数据存储。 4. Data Util:提供数据转换和解析功能,例如JSON和XML的解析,日期时间的格式化,以及加密解密等。 5. Log Util:...
1. **压缩文件/目录**:`zip_util`可能有一个或多个函数,如`compress_file`或`compress_directory`,用于将单个文件或整个目录压缩成ZIP文件。这些函数可能会接受文件路径、目标ZIP文件名以及压缩级别等参数。 2. ...
为了提高开发效率,程序员们常常会创建一些实用工具类库,如"C# Util",它整合了多种常用的功能模块,使得代码复用变得更为便捷。下面将详细阐述这个工具类库中的主要组成部分及其应用场景。 1. **Json**: JSON...
最后,fsck(File System Check)是用于检查和修复文件系统错误的实用程序。在Linux中,文件系统的完整性至关重要,因为任何数据损坏都可能导致严重的系统问题。fsck可以定期或者在系统启动时自动运行,对指定的文件...
import java.io.File; import java.util.ArrayList; import java.util.List; /** * * 项目名称:FileTest * 类名称:TreeFile * 类描述:将制定目录下得所有子目录和文件按树形输出 * 创建时间:2011-10-19 ...
rm: cannot remove `libtoolT': No such file or directory 解决: configure中#$RM "$cfgfile" 3、apr-util-1.6.1.tar 报错: fatal error:expat.h:no such file or directory #include compile interrupt ...
例如,可以使用`java.nio.file.Files`类的readAllBytes()方法读取整个文件到字节数组,或者使用`java.util.zip`包压缩和解压缩文件。 总的来说,Java Swing负责构建用户界面,IO负责数据的传输,而Util提供了许多...
例如,`readFileToString()`可以读取文件内容为字符串,`writeStringToFile()`则可以将字符串写入文件。 - 文件路径处理也是`FileUtil`的一部分,如获取绝对路径 (`getAbsolutePath()`)、判断文件是否存在 (`exists...
2. **文件MD5校验**:对于大文件,MD5Util可能还包含一个方法,如`calculateFileMD5(File file)`,用于计算文件的MD5值。这个过程涉及到读取文件内容并分块计算,最后将所有块的MD5值合并得到整个文件的MD5摘要。 3...
按照一定规则,读取EXCEL的数据 文档介绍:https://blog.csdn.net/weixin_43664254/category_9975078.html 自动化测试用例要怎么写文章里边写的
10. **File**: 表示文件和目录路径名的抽象表示形式,提供了文件和目录的基本操作。 11. **Scanner**: 用于从输入源(如键盘、文件)读取用户输入的数据。 12. **Objects**: 提供了一些实用的静态方法,如对象的...
### 使用 Java.util.zip 包实现数据压缩与解压 在计算机科学领域,数据压缩技术是一项重要的功能,它能够帮助减少存储空间的需求以及提高网络传输效率。本文将通过一系列的示例来详细介绍如何利用 Java 中的 `java....
例如,`readFileToString()`可以将整个文件内容读取为一个字符串,`writeStringToFile()`则可以将字符串写入到文件。此外,`exists()`和`mkdirs()`分别用于检查文件是否存在以及创建多级目录。在处理文件时,`...
在Java编程语言中,`java.util.zip` 是一个非常重要的包,它提供了处理各种压缩格式(如ZIP和GZ)的工具。在这个场景中,我们将深入探讨如何使用这个包来解压缩和压缩ZIP格式的文件。`java.util.zip` 包包含几个关键...
此外,还有C/C++源代码文件,如main.c、util.c等,它们包含了程序的主要逻辑和辅助函数。通过阅读这些源代码,开发者可以了解File-Tail如何实现文件监控,包括文件句柄管理、信号处理、内存管理等方面的知识。 在...
和`net.mindview.util.TextFile`。这表明这个库可能专注于提供打印和文本文件操作的工具。`Print`类可能包含一系列静态方法,用于格式化和输出信息到控制台或者日志文件。而`TextFile`类则可能封装了读取、写入和...