java文件復制程序(ZT)
轉載自 http://www.easyjf.com/blog.ejf?cmd=doc&id=1048581
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; /** * * <p> * Title: 文件處理工具類 * </p> * <p> * Description:實現文件的簡單處理,復制文件、目錄等 * </p> * <p> * Copyright: Copyright (c) 2005 * </p> * <p> * Company: www.easyjf.com * </p> * * @author 天一 * @version 1.0 */ public class FileUtil { /** * 復制目錄下的文件(不包括該目錄)到指定目錄,會連同子目錄一起復制過去。 * * @param targetFile * @param path */ public static void copyFileFromDir(String targetDir, String path) { File file = new File(path); createFile(targetDir, false); if (file.isDirectory()) { copyFileToDir(targetDir, listFile(file)); } } /** * 復制目錄下的文件(不包含該目錄和子目錄,只復制目錄下的文件)到指定目錄。 * * @param targetDir * @param path */ public static void copyFileOnly(String targetDir, String path) { File file = new File(path); File targetFile = new File(targetDir); if (file.isDirectory()) { File[] files = file.listFiles(); for (File subFile : files) { if (subFile.isFile()) { copyFile(targetFile, subFile); } } } } /** * 復制目錄到指定目錄。targetDir是目標目錄,path是源目錄。 * 該方法會將path以及path下的文件和子目錄全部復制到目標目錄 * * @param targetDir * @param path */ public static void copyDir(String targetDir, String path) { File targetFile = new File(targetDir); createFile(targetFile, false); File file = new File(path); if (targetFile.isDirectory() && file.isDirectory()) { copyFileToDir(targetFile.getAbsolutePath() + "/" + file.getName(), listFile(file)); } } /** * 復制一組文件到指定目錄。targetDir是目標目錄,filePath是需要復制的文件路徑 * * @param targetDir * @param filePath */ public static void copyFileToDir(String targetDir, String... filePath) { if (targetDir == null || "".equals(targetDir)) { System.out.println("參數錯誤,目標路徑不能為空"); return; } File targetFile = new File(targetDir); if (!targetFile.exists()) { targetFile.mkdir(); } else { if (!targetFile.isDirectory()) { System.out.println("參數錯誤,目標路徑指向的不是一個目錄!"); return; } } for (String path : filePath) { File file = new File(path); if (file.isDirectory()) { copyFileToDir(targetDir + "/" + file.getName(), listFile(file)); } else { copyFileToDir(targetDir, file, ""); } } } /** * 復制文件到指定目錄。targetDir是目標目錄,file是源文件名,newName是重命名的名字。 * * @param targetFile * @param file * @param newName */ public static void copyFileToDir(String targetDir, File file, String newName) { String newFile = ""; if (newName != null && !"".equals(newName)) { newFile = targetDir + "/" + newName; } else { newFile = targetDir + "/" + file.getName(); } File tFile = new File(newFile); copyFile(tFile, file); } /** * 復制文件。targetFile為目標文件,file為源文件 * * @param targetFile * @param file */ public static void copyFile(File targetFile, File file) { if (targetFile.exists()) { System.out.println("文件" + targetFile.getAbsolutePath() + "已經存在,跳過該文件!"); return; } else { createFile(targetFile, true); } System.out.println("復制文件" + file.getAbsolutePath() + "到" + targetFile.getAbsolutePath()); try { InputStream is = new FileInputStream(file); FileOutputStream fos = new FileOutputStream(targetFile); byte[] buffer = new byte[1024]; while (is.read(buffer) != -1) { fos.write(buffer); } is.close(); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static String[] listFile(File dir) { String absolutPath = dir.getAbsolutePath(); String[] paths = dir.list(); String[] files = new String[paths.length]; for (int i = 0; i < paths.length; i++) { files[i] = absolutPath + "/" + paths[i]; } return files; } public static void createFile(String path, boolean isFile){ createFile(new File(path), isFile); } public static void createFile(File file, boolean isFile) { if (!file.exists()) { if (!file.getParentFile().exists()) { createFile(file.getParentFile(), false); } else { if (isFile) { try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } else { file.mkdir(); } } } } }
posted on 2008-02-26 09:57 風人園 閱讀(2808) 評論(0) 編輯 收藏 所屬分類: Java