`
这些年
  • 浏览: 389286 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 文件操作

    博客分类:
  • java
 
阅读更多

1:得到系统路径分隔符

String systemSeparator = File.separator;

 2:文件复制,删除,移动

1、删除
new File("file path").delete();
2、移动
new File("source file path").renameTo(new File("destination file path"));
3:复制有流

 3:写了一个工具类

package com.chinacache.utils;

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.OutputStream;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class FileUtil {
	private static Logger logger = LoggerFactory.getLogger(FileUtil.class);

	/**
	 * 复制单个文件
	 * 
	 * @param srcFileName
	 *            待复制的文件名
	 * @param descFileName
	 *            目标文件名
	 * @param overlay
	 *            如果目标文件存在,是否覆盖
	 * @return 如果复制成功返回true,否则返回false
	 */
	public static boolean copyFile(String srcFileName, String destFileName, boolean overlay) {
		File srcFile = new File(srcFileName);

		// 判断源文件是否存在
		if (!srcFile.exists()) {
			logger.error(String.format("%s file not found", srcFileName));
			return false;
		} else if (!srcFile.isFile()) {
			logger.error(String.format("%s file not file", srcFileName));
			return false;
		}

		// 判断目标文件是否存在
		File destFile = new File(destFileName);
		if (destFile.exists()) {
			// 如果目标文件存在并允许覆盖
			if (overlay) {
				// 删除已经存在的目标文件,无论目标文件是目录还是单个文件
				new File(destFileName).delete();
			}
		} else {
			// 如果目标文件所在目录不存在,则创建目录
			File parentFile = destFile.getParentFile();
			if (!parentFile.exists()) {
				// 目标文件所在目录不存在
				if (!parentFile.mkdirs()) {
					// 复制文件失败:创建目标文件所在目录失败
					logger.info("file cope nuSources ,dest file parentdir create error");
					return false;
				}
			}
		}

		// 复制文件
		int byteread = 0; // 读取的字节数
		InputStream in = null;
		OutputStream out = null;

		try {
			in = new FileInputStream(srcFile);
			out = new FileOutputStream(destFile);
			byte[] buffer = new byte[1024];

			while ((byteread = in.read(buffer)) != -1) {
				out.write(buffer, 0, byteread);
			}
			return true;
		} catch (FileNotFoundException e) {
			return false;
		} catch (IOException e) {
			return false;
		} finally {
			try {
				if (out != null)
					out.close();
				if (in != null)
					in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 复制整个目录的内容
	 * 
	 * @param srcDirName
	 *            待复制目录的目录名
	 * @param destDirName
	 *            目标目录名
	 * @param overlay
	 *            如果目标目录存在,是否覆盖
	 * @return 如果复制成功返回true,否则返回false
	 */
	public static boolean copyDirectory(String srcDirName, String destDirName, boolean overlay) {
		// 判断源目录是否存在
		File srcDir = new File(srcDirName);
		if (!srcDir.exists()) {
			logger.error(String.format("%s dir not found", srcDirName));
			return false;
		} else if (!srcDir.isDirectory()) {
			logger.error(String.format("%s not dir", srcDirName));
			return false;
		}

		// 如果目标目录名不是以文件分隔符结尾,则加上文件分隔符
		if (!destDirName.endsWith(File.separator)) {
			destDirName = destDirName + File.separator;
		}
		File destDir = new File(destDirName);
		// 如果目标文件夹存在
		if (destDir.exists()) {
			// 如果允许覆盖则删除已存在的目标目录
			if (overlay) {
				new File(destDirName).delete();
			} else {
				logger.error(String.format("%s dir don't overlay", destDirName));
				return false;
			}
		} else {
			// 创建目的目录
			logger.info(String.format("%s dir not found ,start create ...", destDirName));
			if (!destDir.mkdirs()) {
				logger.error(String.format("%s dir not found , create defeat", destDirName));
				return false;
			}
		}

		boolean flag = true;
		File[] files = srcDir.listFiles();
		for (int i = 0; i < files.length; i++) {
			// 复制文件
			if (files[i].isFile()) {
				flag = FileUtil.copyFile(files[i].getAbsolutePath(), destDirName + files[i].getName(), overlay);
				if (!flag)
					break;
			} else if (files[i].isDirectory()) {
				flag = FileUtil.copyDirectory(files[i].getAbsolutePath(), destDirName + files[i].getName(), overlay);
				if (!flag)
					break;
			}
		}
		if (!flag) {
			logger.error(String.format("copy %s  to %s  defeat", srcDirName, destDirName));
			return false;
		} else {
			return true;
		}
	}
}

  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics