java 的 文件、文件夹 的建立、删除、复制以及移动等功能 操作
2010-03-05 09:55
966 查看
已经3月份了,虽说兰州3月天气变化无常,但毕竟春天已经走来,到处散发着沁人的春天的泥土气息,勃勃的生机给人以朝气,荡漾的绿意就在眼前,!
最近写了一个关于文件操作的类,给大家分享一下,如果您发现了问题,或者也有更好的改进,也希望拿出来分享一下,可以给我留言,谢谢啦 :)
2010-03-05 10:05:46
最近写了一个关于文件操作的类,给大家分享一下,如果您发现了问题,或者也有更好的改进,也希望拿出来分享一下,可以给我留言,谢谢啦 :)
]package util; import java.io.*; /** * 提供对文件、文件夹 的建立、删除、复制以及移动等功能 * 文件操作工具类 * @author 金涛 * @version 1.0.0 * @date2010-3-4 */ public class FileUtil { /** * 新建目录并返回该新建的目录 * @param folderPath String 文件夹路径 * @return File 新建的目录 */ public File newFolder (String folderPath) throws Exception { try { File folder = new File(folderPath); if (!folder.exists()) { folder.mkdir(); } return folder; }catch (Exception e) { e.printStackTrace(); throw new Exception ("新建目录操作出错"); } } /** * 新建目录 如果目录路径中有不存在的目录则也进行建立 并返回该新建的目录 * @param folderPath String 目录路径 * @return File 新建的目录 */ public File newFolderAndPath (String folderPath) throws Exception { try { File folder = new File(folderPath); if (!folder.exists()) { folder.mkdirs(); } return folder; }catch (Exception e) { e.printStackTrace(); throw new Exception ("新建目录操作出错"); } } /** * 新建文件,从数据如输入流获得数据 * @param filePath String 要新建文件路径及名称 * @param fis * @return file File 返回建立的文件 */ public File newFile(String filePath, FileInputStream fis) throws Exception { int len = 0; try { File file = new File(filePath); if (!file.exists()) { file.createNewFile(); } FileOutputStream fs = new FileOutputStream(file); byte[] buffer = new byte[1024]; while ((len = fis.read(buffer)) != -1) { fs.write(buffer, 0, len); } fs.flush(); fs.close(); fis.close(); return file; }catch (Exception e) { e.printStackTrace(); throw new Exception ("新建一个文件出错"); } } /** * 新建一个字符文件,并向其中添加内容 * @param filePath 新建的带文件名的文件路径 * @param conttent 文件内容 * @return file File 返回建立的文件 * @throws Exception */ public File newFile(String filePath,String conttent) throws Exception { try{ File file = new File(filePath); if (!file.exists()) { file.createNewFile(); } FileWriter resultFile = new FileWriter(filePath); PrintWriter myFile = new PrintWriter(resultFile); String strContent = conttent; myFile.println(strContent); myFile.close(); resultFile.close(); return file; }catch (Exception e) { e.printStackTrace(); throw new Exception ("新建一个字符文件出错"); } } /** * 从文件中获得字节数组 * @param f File文件 * @return */ private byte[] getBytesFromFile(File f) throws Exception { int len = 0; if (f == null && !f.exists()) { return null; } try { FileInputStream stream = new FileInputStream(f); ByteArrayOutputStream out = new ByteArrayOutputStream(1000); byte[] b = new byte[1024]; while ((len = stream.read(b)) != -1) out.write(b, 0, len); stream.close(); out.close(); return out.toByteArray(); }catch (Exception e) { e.printStackTrace(); throw new Exception ("从文件中获得字节数组出错"); } } /** * 不抛出异常的文件删除 * @param file java.io.File 需要删除的文件对象 * @return boolean true = 文件删除成功, false = 文件删除失败 */ public boolean delFileOnNoE(File file){ try{ return file.delete(); }catch (Exception e) { e.printStackTrace(); return false; } } /** * 可以抛出异常的文件删除 * @param file java.io.File 需要删除的文件对象 * @return boolean true = 文件删除成功, false = 文件删除失败 */ public boolean delFileOnE(File file) throws Exception{ try{ if (file.delete()) { return true; }else { throw new Exception("不能删除文件"+file.getPath()+File.separator+file.getName()); } }catch (Exception e) { e.printStackTrace(); throw new Exception("删除文件异常"+e.getMessage()); } } /** * 根据路径删除文件 * @param filePathAndName String 文件路径及名称 * @return boolean (true= 删除成功,false= 删除失败) */ public boolean delFile(String filePathAndName) { try { String filePath = filePathAndName; java.io.File myDelFile = new java.io.File(filePath); if (!myDelFile.delete()) { throw new Exception ("删除文件失败"); } return true; }catch (Exception e) { System.out.println("删除文件操作出错"); e.printStackTrace(); return false; } } /** * 根据路径删除文件夹 * @param path String 文件夹路径 * @param isThrowException boolean (true = 删除文件出错时抛出异常,false = 删除文件出错时不抛出异常,继续执行) * @param isDel boolean (true= 删除整个文件夹, false=只删除文件夹里的所有内容) * @return long (当isThrowException为false时:0 = 删除文件夹成功,>0 表示删除文件夹下边的文件时,出错的个数 * 当isThrowException为true时:0 = 删除文件夹成功,当删除出错时会抛出异常) * @exception */ private long delFileOp(String path,boolean isDel,boolean isThrowException)throws Exception { long flag = 0l; try { File dir = new File(path);//获得该文件夹 if (dir.exists() && dir.isDirectory()) { File[] dirAndFiles = dir.listFiles();//返回此抽象路径中的文件和目录 for (int i=0; i<dirAndFiles.length; i++) { if (dirAndFiles[i].isDirectory()) { flag += delFileOp(dirAndFiles[i].getAbsolutePath(),true,isThrowException);//要删除子文件夹里的所有内容 }else { if (isThrowException) { if (!this.delFileOnE(dirAndFiles[i])) { flag++; } }else{ if (!this.delFileOnNoE(dirAndFiles[i])) { flag++; } } } } if (dir.listFiles().length==0 && isDel) {//删除自身是空的文件夹 if (isThrowException) { if (!this.delFileOnE(dir)) { flag++; } }else{ if (!this.delFileOnNoE(dir)) { flag++; } } } } }catch (Exception e) { e.printStackTrace(); throw new Exception ("删除文件夹出错"+e.getMessage()); } return flag; } /** * 根据路径删除文件夹里的内容 * @param folderPath String 文件夹路径 * @param isThrowException boolean (true = 删除文件出错时抛出异常,false = 删除文件出错时不抛出异常,继续执行) * @return long (当isThrowException为false时:0 = 删除文件夹成功,>0 表示删除文件夹下边的文件时,出错的个数 * 当isThrowException为true时: 0 = 删除文件夹成功,当删除出错时会抛出异常) * @throws Exception */ public long delFolderContent(String folderPath,boolean isThrowException) throws Exception { try { return delFileOp(folderPath,false,isThrowException); //删除完里面所有内容 }catch (Exception e) { e.printStackTrace(); throw new Exception ("删除文件夹内容出错"+e.getMessage()); } } /** * 根据路径删除文件夹 * @param filePathAndName String 文件夹路径及名称 * @param isThrowException boolean (true = 删除文件出错时抛出异常,false = 删除文件出错时不抛出异常,继续执行) * @return long (当isThrowException为false时:0 = 删除文件夹成功,>0 表示删除文件夹下边的文件时,出错的个数 * 当isThrowException为true时:0 = 删除文件夹成功,当删除出错时会抛出异常) * @exception */ public long delFolder(String folderPath,boolean isThrowException) throws Exception { try { return delFileOp(folderPath,true,isThrowException); //删除完里面所有内容 }catch (Exception e) { e.printStackTrace(); throw new Exception ("删除文件夹出错"+e.getMessage()); } } /** * 复制单个文件 * @param oldPath String 原文件路径 得包括文件名 * @param newPath String 目标路径 得包括文件名 */ public void copyFile(String oldPath, String newPath) throws Exception{ int b = 0; try { File oldFile = new File(oldPath); if (oldFile.exists()) {//文件存在时 InputStream ins = new FileInputStream(oldPath); FileOutputStream fs = new FileOutputStream(newPath); byte[] buffer = new byte[1024]; while ((b = ins.read(buffer)) != -1) {//一次读入1024个字节 如果效率低可以重新改变缓冲区大小 fs.write(buffer, 0, b); } fs.flush(); fs.close(); ins.close(); } }catch (Exception e) { e.printStackTrace(); throw new Exception ("复制单个文件操作出错"); } } /** * 复制文件夹到另一个目录 * @param copyPath String 原文件夹路径 * @param targetPath String 目标文件夹路径 * @param isCopy boolean true=复制文件夹到另一个目录,false=只复制文件夹下面的文件到另一个目录 * @return boolean */ private void copyFolderOp(String copyPath, String targetPath,boolean isCopy) throws Exception { FileInputStream ins = null; FileOutputStream os = null; int len = 0; try { File copyFolder = new File(copyPath); File targetFolder = new File(targetPath); File newFolder = null; if(!targetFolder.exists() && !targetFolder.mkdirs()) {//如果目标路径不存在,则建立目标路径 throw new Exception ("文件夹:"+targetPath+"建立失败"); } if (copyFolder.exists() && copyFolder.isDirectory()) { if (isCopy) { newFolder = this.newFolderAndPath(targetPath +File.separator+ copyFolder.getName());//在目标文件夹内建立原文件夹 }else { newFolder = targetFolder; } File [] oldFiles = copyFolder.listFiles(); for (int i=0; i <oldFiles.length; i++) { if(oldFiles[i].isFile()){ this.copyFile(oldFiles[i].getPath(),newFolder.getPath()+ File.separator +oldFiles[i].getName()); }else {//如果是子文件夹 copyFolderOp(oldFiles[i].getPath(),newFolder.getPath(),true); } } } }catch (Exception e) { e.printStackTrace(); throw new Exception ("复制整个文件夹出错"); } } /** * 复制文件夹里的内容到指定目录 * @param copyPath String 原文件夹路径 * @param targetPath String 目标文件夹路径 * @throws Exception */ public void copyFolderContent(String copyPath, String targetPath) throws Exception { try{ copyFolderOp(copyPath,targetPath,false); }catch (Exception e) { e.printStackTrace(); throw new Exception ("复制文件夹"+copyPath+"里的内容,到"+targetPath+"目录出错"); } } /** * 复制整个文件夹到指定目录 * @param copyPath * @param targetPath * @throws Exception */ public void copyAllFolder(String copyPath, String targetPath) throws Exception { try{ copyFolderOp(copyPath,targetPath,true); }catch (Exception e) { e.printStackTrace(); throw new Exception ("复制整个文件夹"+copyPath+",到"+targetPath+"目录出错"); } } /** * 移动文件到指定目录 * @param oldPath String * @param newPath String */ public void moveFile(String oldPath, String newPath) throws Exception { try{ copyFile(oldPath, newPath); delFile(oldPath); }catch (Exception e) { e.printStackTrace(); throw new Exception ("移动文件"+oldPath+"到"+newPath+"出错"); } } /** * 移动文件夹到指定目录 * @param oldPath String * @param newPath String */ public void moveFolder(String oldPath, String newPath) throws Exception { try{ copyFolderOp(oldPath, newPath,true); delFolder(oldPath,false); }catch(Exception e) { e.printStackTrace(); throw new Exception ("移动文件夹"+oldPath+"到"+newPath+"出错"); } } /** * @param args */ public static void main(String[] args){ FileUtil fu = new FileUtil(); try{ fu.newFile("E://test//test.html", "<html><head><title></title></head><body><a href="http://www.sina.com" mce_href="http://www.sina.com" >测试</a></body></html>"); fu.copyAllFolder("E://test", "E://tmp"); fu.delFolder("E://tmp//test",true); }catch(Exception e) { e.printStackTrace(); } } }
2010-03-05 10:05:46
相关文章推荐
- java中File文件的创建,删除,复制,移动,以及目录文件的删除等等,主要是文件及文件夹的操作
- java文件和文件夹复制、删除、移动操作
- 纯Java文件操作工具,支持文件、文件夹的复制、删除、移动
- 纯Java文件操作工具,支持文件、文件夹的复制、删除、移动
- java 文件及文件夹操作(复制、移动、删除)
- 纯Java文件操作工具,支持文件、文件夹的复制、删除、移动
- java文件和文件夹复制、删除、移动操作
- java文件和文件夹复制、删除、移动操作
- ( 转载)纯Java文件操作工具,支持文件、文件夹的复制、删除、移动
- java文件和文件夹复制、删除、移动操作
- java文件和文件夹复制、删除、移动操作
- java文件和文件夹复制、删除、移动操作
- java文件和文件夹复制、删除、移动操作
- java 对文件的删除、剪切、移动和创建文件夹操作
- java中对文件file的操作 新建文件 移动文件 复制文件 删除文件
- 文件以及文件夹处理(新建,移动,删除,复制)
- java操作文件工具类( 新建、复制、删除、移动文件(夹))
- JAVA 创建文件和文件夹,删除文件和文件夹,复制文件和文件夹,移动文件和文件夹的实用工具类
- 文件操作 复制移动删除重命名文件文件夹(转帖)