- 浏览: 430506 次
- 性别:
- 来自: 宁波
文章分类
最新评论
-
coosummer:
推荐使用http://buttoncssgenerator.c ...
11大CSS按钮教程 -
a754782339:
楼主你好,我现在遇到的问题就是json与hibernate使 ...
Json-lib 与 hibernate 共同使用的问题 -
ying890:
非常感谢!
Extjs 处理 Date 对象 -
xa_zbl:
加了以后,报这个错误:TypeError: b[this.vt ...
ExtJs自定义Vtype示例 -
nbkangta:
dampce032 写道如果我想取到Person下Addres ...
Json-lib 与 hibernate 共同使用的问题
把网上的文件操作类整合了一下,算是转帖
package com.intime.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.BufferedWriter; 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.InputStreamReader; import java.io.OutputStreamWriter; import java.io.RandomAccessFile; import java.io.StringReader; import java.util.Enumeration; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import org.apache.tools.zip.ZipOutputStream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author ERic * @version 1.0 */ public class FileUtil { private static Logger log = LoggerFactory.getLogger(FileUtil.class); /** * 创建单个文件夹。 * * @param dir * @param ignoreIfExitst * true 表示如果文件夹存在就不再创建了。false是重新创建。 * @throws IOException */ public static void createDir(String dir, boolean ignoreIfExitst) throws IOException { File file = new File(dir); if (ignoreIfExitst && file.exists()) { return; } if (file.mkdir() == false) { throw new IOException("Cannot create the directory = " + dir); } } /** * 创建多个文件夹 * * @param dir * @param ignoreIfExitst * @throws IOException */ public static void createDirs(String dir, boolean ignoreIfExitst) throws IOException { File file = new File(dir); if (ignoreIfExitst && file.exists()) { return; } if (file.mkdirs() == false) { throw new IOException("Cannot create directories = " + dir); } } /** * 删除一个文件。 * * @param filename * @throws IOException */ public static void deleteFile(String filename) throws IOException { File file = new File(filename); log.trace("Delete file = " + filename); if (file.isDirectory()) { throw new IOException( "IOException -> BadInputException: not a file."); } if (file.exists() == false) { throw new IOException( "IOException -> BadInputException: file is not exist."); } if (file.delete() == false) { throw new IOException("Cannot delete file. filename = " + filename); } } /** * 删除文件夹及其下面的子文件夹 * * @param dir * @throws IOException */ public static void deleteDir(File dir) throws IOException { if (dir.isFile()) throw new IOException( "IOException -> BadInputException: not a directory."); File[] files = dir.listFiles(); if (files != null) { for (int i = 0; i < files.length; i++) { File file = files[i]; if (file.isFile()) { file.delete(); } else { deleteDir(file); } } }// if dir.delete(); } public static String getPathSeparator() { return java.io.File.pathSeparator; } public static String getFileSeparator() { return java.io.File.separator; } /** * 获取到目录下面文件的大小。包含了子目录。 * * @param dir * @return * @throws IOException */ public static long getDirLength(File dir) throws IOException { if (dir.isFile()) throw new IOException("BadInputException: not a directory."); long size = 0; File[] files = dir.listFiles(); if (files != null) { for (int i = 0; i < files.length; i++) { File file = files[i]; // file.getName(); // System.out.println(file.getName()); long length = 0; if (file.isFile()) { length = file.length(); } else { length = getDirLength(file); } size += length; }// for }// if return size; } /** * 将文件清空。 * * @param srcFilename * @throws IOException */ public static void emptyFile(String srcFilename) throws IOException { File srcFile = new File(srcFilename); if (!srcFile.exists()) { throw new FileNotFoundException("Cannot find the file: " + srcFile.getAbsolutePath()); } if (!srcFile.canWrite()) { throw new IOException("Cannot write the file: " + srcFile.getAbsolutePath()); } FileOutputStream outputStream = new FileOutputStream(srcFilename); outputStream.close(); } /** * Write content to a fileName with the destEncoding 写文件。如果此文件不存在就创建一个。 * * @param content * String * @param fileName * String * @param destEncoding * String * @throws FileNotFoundException * @throws IOException */ public static void writeFile(String content, String fileName, String destEncoding) throws FileNotFoundException, IOException { File file = null; try { file = new File(fileName); if (!file.exists()) { if (file.createNewFile() == false) { throw new IOException("create file '" + fileName + "' failure."); } } if (file.isFile() == false) { throw new IOException("'" + fileName + "' is not a file."); } if (file.canWrite() == false) { throw new IOException("'" + fileName + "' is a read-only file."); } } finally { // we dont have to close File here } BufferedWriter out = null; try { FileOutputStream fos = new FileOutputStream(fileName); out = new BufferedWriter(new OutputStreamWriter(fos, destEncoding)); out.write(content); out.flush(); } catch (FileNotFoundException fe) { log.error("Error", fe); throw fe; } catch (IOException e) { log.error("Error", e); throw e; } finally { try { if (out != null) out.close(); } catch (IOException ex) { } } } /** * 读取文件的内容,并将文件内容以字符串的形式返回。 * * @param fileName * @param srcEncoding * @return * @throws FileNotFoundException * @throws IOException */ public static String readFile(String fileName, String srcEncoding) throws FileNotFoundException, IOException { File file = null; try { file = new File(fileName); if (file.isFile() == false) { throw new IOException("'" + fileName + "' is not a file."); } } finally { // we dont have to close File here } BufferedReader reader = null; try { StringBuffer result = new StringBuffer(1024); FileInputStream fis = new FileInputStream(fileName); reader = new BufferedReader(new InputStreamReader(fis, srcEncoding)); char[] block = new char[512]; while (true) { int readLength = reader.read(block); if (readLength == -1) break;// end of file result.append(block, 0, readLength); } return result.toString(); } catch (FileNotFoundException fe) { log.error("Error", fe); throw fe; } catch (IOException e) { log.error("Error", e); throw e; } finally { try { if (reader != null) reader.close(); } catch (IOException ex) { } } } /* * 1 ABC 2 abC Gia su doc tu dong 1 lay ca thay 5 dong => 1 --> 5 3 ABC */ public static String[] getLastLines(File file, int linesToReturn) throws IOException, FileNotFoundException { final int AVERAGE_CHARS_PER_LINE = 250; final int BYTES_PER_CHAR = 2; RandomAccessFile randomAccessFile = null; StringBuffer buffer = new StringBuffer(linesToReturn * AVERAGE_CHARS_PER_LINE); int lineTotal = 0; try { randomAccessFile = new RandomAccessFile(file, "r"); long byteTotal = randomAccessFile.length(); long byteEstimateToRead = linesToReturn * AVERAGE_CHARS_PER_LINE * BYTES_PER_CHAR; long offset = byteTotal - byteEstimateToRead; if (offset < 0) { offset = 0; } randomAccessFile.seek(offset); // log.debug("SKIP IS ::" + offset); String line = null; String lineUTF8 = null; while ((line = randomAccessFile.readLine()) != null) { lineUTF8 = new String(line.getBytes("ISO8859_1"), "UTF-8"); lineTotal++; buffer.append(lineUTF8).append("\n"); } } finally { if (randomAccessFile != null) { try { randomAccessFile.close(); } catch (IOException ex) { } } } String[] resultLines = new String[linesToReturn]; BufferedReader in = null; try { in = new BufferedReader(new StringReader(buffer.toString())); int start = lineTotal /* + 2 */- linesToReturn; // Ex : 55 - 10 = 45 // ~ offset if (start < 0) start = 0; // not start line for (int i = 0; i < start; i++) { in.readLine(); // loop until the offset. Ex: loop 0, 1 ~~ 2 // lines } int i = 0; String line = null; while ((line = in.readLine()) != null) { resultLines[i] = line; i++; } } catch (IOException ie) { log.error("Error" + ie); throw ie; } finally { if (in != null) { try { in.close(); } catch (IOException ex) { } } } return resultLines; } /** * 单个文件拷贝。 * * @param srcFilename * @param destFilename * @param overwrite * @throws IOException */ public static void copyFile(String srcFilename, String destFilename, boolean overwrite) throws IOException { File srcFile = new File(srcFilename); // 首先判断源文件是否存在 if (!srcFile.exists()) { throw new FileNotFoundException("Cannot find the source file: " + srcFile.getAbsolutePath()); } // 判断源文件是否可读 if (!srcFile.canRead()) { throw new IOException("Cannot read the source file: " + srcFile.getAbsolutePath()); } File destFile = new File(destFilename); if (overwrite == false) { // 目标文件存在就不覆盖 if (destFile.exists()) return; } else { // 如果要覆盖已经存在的目标文件,首先判断是否目标文件可写。 if (destFile.exists()) { if (!destFile.canWrite()) { throw new IOException("Cannot write the destination file: " + destFile.getAbsolutePath()); } } else { // 不存在就创建一个新的空文件。 if (!destFile.createNewFile()) { throw new IOException("Cannot write the destination file: " + destFile.getAbsolutePath()); } } } BufferedInputStream inputStream = null; BufferedOutputStream outputStream = null; byte[] block = new byte[1024]; try { inputStream = new BufferedInputStream(new FileInputStream(srcFile)); outputStream = new BufferedOutputStream(new FileOutputStream( destFile)); while (true) { int readLength = inputStream.read(block); if (readLength == -1) break;// end of file outputStream.write(block, 0, readLength); } } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException ex) { // just ignore } } if (outputStream != null) { try { outputStream.close(); } catch (IOException ex) { // just ignore } } } } /** * 单个文件拷贝。 * * @param srcFile * @param destFile * @param overwrite * 是否覆盖目的文件 * @throws IOException */ public static void copyFile(File srcFile, File destFile, boolean overwrite) throws IOException { // 首先判断源文件是否存在 if (!srcFile.exists()) { throw new FileNotFoundException("Cannot find the source file: " + srcFile.getAbsolutePath()); } // 判断源文件是否可读 if (!srcFile.canRead()) { throw new IOException("Cannot read the source file: " + srcFile.getAbsolutePath()); } if (overwrite == false) { // 目标文件存在就不覆盖 if (destFile.exists()) return; } else { // 如果要覆盖已经存在的目标文件,首先判断是否目标文件可写。 if (destFile.exists()) { if (!destFile.canWrite()) { throw new IOException("Cannot write the destination file: " + destFile.getAbsolutePath()); } } else { // 不存在就创建一个新的空文件。 if (!destFile.createNewFile()) { throw new IOException("Cannot write the destination file: " + destFile.getAbsolutePath()); } } } BufferedInputStream inputStream = null; BufferedOutputStream outputStream = null; byte[] block = new byte[1024]; try { inputStream = new BufferedInputStream(new FileInputStream(srcFile)); outputStream = new BufferedOutputStream(new FileOutputStream( destFile)); while (true) { int readLength = inputStream.read(block); if (readLength == -1) break;// end of file outputStream.write(block, 0, readLength); } } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException ex) { // just ignore } } if (outputStream != null) { try { outputStream.close(); } catch (IOException ex) { // just ignore } } } } /** * 拷贝文件,从源文件夹拷贝文件到目的文件夹。 <br> * 参数源文件夹和目的文件夹,最后都不要带文件路径符号,例如:c:/aa正确,c:/aa/错误。 * * @param srcDirName * 源文件夹名称 ,例如:c:/test/aa 或者c:\\test\\aa * @param destDirName * 目的文件夹名称,例如:c:/test/aa 或者c:\\test\\aa * @param overwrite * 是否覆盖目的文件夹下面的文件。 * @throws IOException */ public static void copyFiles(String srcDirName, String destDirName, boolean overwrite) throws IOException { File srcDir = new File(srcDirName);// 声明源文件夹 // 首先判断源文件夹是否存在 if (!srcDir.exists()) { throw new FileNotFoundException( "Cannot find the source directory: " + srcDir.getAbsolutePath()); } File destDir = new File(destDirName); if (overwrite == false) { if (destDir.exists()) { // do nothing } else { if (destDir.mkdirs() == false) { throw new IOException( "Cannot create the destination directories = " + destDir); } } } else { // 覆盖存在的目的文件夹 if (destDir.exists()) { // do nothing } else { // create a new directory if (destDir.mkdirs() == false) { throw new IOException( "Cannot create the destination directories = " + destDir); } } } // 循环查找源文件夹目录下面的文件(屏蔽子文件夹),然后将其拷贝到指定的目的文件夹下面。 File[] srcFiles = srcDir.listFiles(); if (srcFiles == null || srcFiles.length < 1) { // throw new IOException ("Cannot find any file from source // directory!!!"); return;// do nothing } // 开始复制文件 int SRCLEN = srcFiles.length; for (int i = 0; i < SRCLEN; i++) { // File tempSrcFile = srcFiles[i]; File destFile = new File(destDirName + File.separator + srcFiles[i].getName()); // 注意构造文件对象时候,文件名字符串中不能包含文件路径分隔符";". // log.debug(destFile); if (srcFiles[i].isFile()) { copyFile(srcFiles[i], destFile, overwrite); } else { // 在这里进行递归调用,就可以实现子文件夹的拷贝 copyFiles(srcFiles[i].getAbsolutePath(), destDirName + File.separator + srcFiles[i].getName(), overwrite); } } } /** * * 压缩文件 * * @param inputFileName * 要压缩的文件或文件夹路径,例如:c:\\a.txt,c:\\a\ * * @param outputFileName * 输出zip文件的路径,例如:c:\\a.zip * */ public static void zip(String inputFileName, String outputFileName) throws Exception { ZipOutputStream out = new ZipOutputStream(new FileOutputStream( outputFileName)); zip(out, new File(inputFileName), ""); log.debug("压缩完成!"); out.closeEntry(); out.close(); } /** * * 压缩文件 * * @param out * org.apache.tools.zip.ZipOutputStream * * @param file * 待压缩的文件 * * @param base * 压缩的根目录 * */ private static void zip(ZipOutputStream out, File file, String base) throws Exception { if (file.isDirectory()) { File[] fl = file.listFiles(); base = base.length() == 0 ? "" : base + File.separator; for (int i = 0; i < fl.length; i++) { zip(out, fl[i], base + fl[i].getName()); } } else { out.putNextEntry(new ZipEntry(base)); log.debug("添加压缩文件:" + base); FileInputStream in = new FileInputStream(file); int b; while ((b = in.read()) != -1) { out.write(b); } in.close(); } } /** * * 解压zip文件 * * @param zipFileName * 待解压的zip文件路径,例如:c:\\a.zip * * @param outputDirectory * 解压目标文件夹,例如:c:\\a\ * */ public static void unZip(String zipFileName, String outputDirectory) throws Exception { ZipFile zipFile = new ZipFile(zipFileName); try { Enumeration<?> e = zipFile.getEntries(); ZipEntry zipEntry = null; createDirectory(outputDirectory, ""); while (e.hasMoreElements()) { zipEntry = (ZipEntry) e.nextElement(); log.debug("解压:" + zipEntry.getName()); if (zipEntry.isDirectory()) { String name = zipEntry.getName(); name = name.substring(0, name.length() - 1); File f = new File(outputDirectory + File.separator + name); f.mkdir(); log .debug("创建目录:" + outputDirectory + File.separator + name); } else { String fileName = zipEntry.getName(); fileName = fileName.replace('\\', '/'); if (fileName.indexOf("/") != -1) { createDirectory(outputDirectory, fileName.substring(0, fileName.lastIndexOf("/"))); fileName = fileName.substring( fileName.lastIndexOf("/") + 1, fileName .length()); } File f = new File(outputDirectory + File.separator + zipEntry.getName()); f.createNewFile(); InputStream in = zipFile.getInputStream(zipEntry); FileOutputStream out = new FileOutputStream(f); byte[] by = new byte[1024]; int c; while ((c = in.read(by)) != -1) { out.write(by, 0, c); } in.close(); out.close(); } } } catch (Exception ex) { System.out.println(ex.getMessage()); } finally { zipFile.close(); log.debug("解压完成!"); } } private static void createDirectory(String directory, String subDirectory) { String dir[]; File fl = new File(directory); try { if (subDirectory == "" && fl.exists() != true) { fl.mkdir(); } else if (subDirectory != "") { dir = subDirectory.replace('\\', '/').split("/"); for (int i = 0; i < dir.length; i++) { File subFile = new File(directory + File.separator + dir[i]); if (subFile.exists() == false) subFile.mkdir(); directory += File.separator + dir[i]; } } } catch (Exception ex) { System.out.println(ex.getMessage()); } } /** * * 拷贝文件夹中的所有文件到另外一个文件夹 * * @param srcDirector * 源文件夹 * * @param desDirector * 目标文件夹 * */ public static void copyFileWithDirector(String srcDirector, String desDirector) throws IOException { (new File(desDirector)).mkdirs(); File[] file = (new File(srcDirector)).listFiles(); for (int i = 0; i < file.length; i++) { if (file[i].isFile()) { log.debug("拷贝:" + file[i].getAbsolutePath() + "-->" + desDirector + "/" + file[i].getName()); FileInputStream input = new FileInputStream(file[i]); FileOutputStream output = new FileOutputStream(desDirector + "/" + file[i].getName()); 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 (file[i].isDirectory()) { log.debug("拷贝:" + file[i].getAbsolutePath() + "-->" + desDirector + "/" + file[i].getName()); copyFileWithDirector(srcDirector + "/" + file[i].getName(), desDirector + "/" + file[i].getName()); } } } /** * 删除文件夹 * * @param folderPath * folderPath 文件夹完整绝对路径 */ public static void delFolder(String folderPath) throws Exception { // 删除完里面所有内容 delAllFile(folderPath); String filePath = folderPath; filePath = filePath.toString(); File myFilePath = new File(filePath); // 删除空文件夹 myFilePath.delete(); } /** * 删除指定文件夹下所有文件 * * @param path * 文件夹完整绝对路径 */ public static boolean delAllFile(String path) throws Exception { 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; } }
发表评论
-
还在用循环吗?Java复制文件内容NIO版本
2013-06-25 21:06 1415网上的文件操作目前都停留在老的IO API当中,这大概就是 ... -
Java 用泛型实现元组
2013-03-10 10:27 0Python, Ruby等动态语言的流行,我认为其中很大的一 ... -
试着解释神奇的7循环
2013-03-01 19:13 1119作为一名非计算机科班出身的程序员对计算机的底层架构知之甚少, ... -
Maven集成Jetty使用resteasy无法使用的问题
2013-02-12 14:44 2330最近在学习JAX-RS, 使用的是Jboss的 restea ... -
经常要忘记。。。Ubuntu install jdk 7
2013-01-14 20:33 943来自 http://blog.csdn.net/yang_h ... -
常见数字类型long, int, short和byte数组的转换
2012-11-05 17:13 1794show you the code~! /** * ... -
Java系统属性
2012-10-22 11:31 2292似乎从来没仔细看过java System.getPropert ... -
Java并发编程实践之Executor框架
2012-10-20 18:19 940java中任务的抽象不是Thread,而是Executor! ... -
《重构——改善既有代码的设计》读书笔记
2012-08-04 13:39 1252最近公司开展读书月活动,免费提供书籍要求读完上交读书笔记一篇 ... -
Java并发编程之CyclicBarrier实例
2012-06-24 15:18 1509最近在看《Java并发编程实战》,对于想学习Java多线程编程 ... -
使用 Eclipse Memory Analyzer 进行堆转储文件分析
2010-12-26 00:00 1670转自IBM DEVELOPER WORKS 对于大型 J ... -
java常见笔试题
2009-12-03 12:52 1328第一,谈谈final, finally, ... -
Myeclipse部署项目到服务器时,WEB-INF\classes中无文件解决方法
2009-07-08 10:49 6335今天重新从SVN将项目迁出了一下,在用Myeclipse部署项 ... -
JDBC获取数据库所有表
2009-06-21 15:49 9239当初在JDBC还没研究透的时候,就偷懒去用了hibernate ... -
[Jakarta Commons] 使用StringUtil类
2009-02-17 17:47 1370原文地址:http://www.blogjava.net/zJ ... -
Json-lib 如何转换日期格式的字段 json
2009-02-11 19:54 4930json : {password:"234234&q ... -
用 GlassFish v2 替换 Tomcat 5.x
2009-01-24 22:17 1800羡慕ROR的热部署啊,无论修改什么基本都可以热部署,tomca ... -
Hibernate Gossip: Criteria 進階查詢
2008-12-29 00:51 1214使用Criteria進行查詢時,不僅僅能組合出SQL中wher ... -
Hibernate3的DetachedCriteria支持
2008-12-29 00:02 1171作者:robbin出处:Java视线责任编辑:方舟 居然隔了 ... -
String2 中的ActionContext引起的问题
2008-12-25 14:55 1334在Action中获取URL参数 String id = Ac ...
相关推荐
编写带缓存的文件操作类 从执行体程序库中的CLLogger类可知,通过缓存要写入文件中的数据,能够提高读写磁盘的性能 请编写一个文件操作的封装类,其要求如下: 需要提供open/read/write/lseek/close等函数的封装函数...
java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java...
PHP 写的一个简单文件操作类,支持 PHP4 PHP5
c#文件操作类,读取,写入;根据传入的虚拟路径或物理路径获取文件、目录;
php文件操作类,包括创建文件夹、递归复制、递归删除、递归移动
php中的面向对象,文件操作类,可以查看文件,删除文件,上传文件。包含构造函数,打开工作文件目录,向当前文件夹添加文件,同时检查是否有重名的文件,将临时文件复制到当前目录中。
请编写一个文件操作的封装类,其要求如下: 需要提供open/read/write/lseek/close等函数的封装函数 该类要提供数据缓存服务。 调用该类的写操作接口时,数据要首先写到缓存,然后再根据策略写到文件中。 调用该类的...
FTP操作类、导出Excel、配置文件操作类、 文件操作类、弹出消息类、XML操作类、 弹出消息类、分词辅助类、时间操作类、 汉字转拼音、压缩解压缩、条形码、 正则表达式、日历、上传下载、 视频转换类、随机数类、条形...
易语言文件操作类模块源码,文件操作类模块,取对象,取驱动器集合,追加路径,取驱动器名称,取父文件夹名称,取文件名,取不带扩展名的文件名,取扩展名,取完整路径名,取临时文件名,驱动器是否存在,文件是否存在,文件夹是否...
C#文件操作类
在这个“基于NPOI的打开/导出Excel文件操作类”中,我们可能只涉及到HSSFWorkbook,因为它仅支持Excel 2003。 1. **打开Excel文件**: 使用NPOI打开Excel文件,你需要创建一个HSSFWorkbook实例,通过...
php真正的ZIP文件操作类,php将文件夹打包成zip文件,分析了php操作zip文件的技巧,有兴趣的朋友可以引用参考,或者朋友们有更好的zip类,可以上传到我们PHP中文网与我们一起学习分享。
易语言源码易语言文件操作类模块源码.rar 易语言源码易语言文件操作类模块源码.rar 易语言源码易语言文件操作类模块源码.rar 易语言源码易语言文件操作类模块源码.rar 易语言源码易语言文件操作类模块源码.rar ...
C#文件和目录操作类 主要包含文件操作类和目录操作类两个类方法
文件操作,Excel文件操作类头文件CSpreadSheet_src,Excel文件操作类头文件CSpreadSheet_src,Excel文件操作类头文件CSpreadSheet_src,Excel文件操作类头文件CSpreadSheet_src
非常简单的ini配置文件操作类,光看.h或者.cpp就能明白用法。若有使用上的疑惑,可以参见链接:http://blog.csdn.net/xyz59886/article/details/79423311
jar包 博文链接:https://wakin2003.iteye.com/blog/242473
网友封装的C#文件操作类,包括目录创建、文件内容读写等;