`
这些年
  • 浏览: 399869 次
  • 性别: 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;
		}
	}
}

  

分享到:
评论

相关推荐

    java文件操作类

    java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java...

    Java文件操作封装类

    Java文件操作封装类

    java文件操作工具类

    java文件操作工具类是java中针对文件操作的一个工具类,可以方便的读取,下载,上传文件等操作,希望可以帮到大家。

    Java文件操作源码大全

    Java文件操作是编程中常见的任务,涉及到文件的创建、删除、读取、写入以及更复杂的操作如复制、移动、加密、压缩等。以下是一些关键的Java文件操作知识点: 1. **创建文件夹**:使用`java.io.File`类的`mkdir()`或...

    java文件操作

    java 文件操作,创建文件,创建目录,删除文件目录

    java视频教程—Java文件操作

    java视频教程 Java文件操作 JavaFile

    java文件操作大全

    如何在Java中操作文件呢?转载供大家欣赏

    java文件操作(增删改查)

    本项目"java文件操作(增删改查)"是基于控制台实现的一个无界面程序,利用Eclipse集成开发环境编写,实现了基本的文件管理功能。下面我们将深入探讨这些知识点。 首先,我们要了解Java中的`java.io`包,它是处理输入...

    Java文件操作一例:Copy 复制文件.rar

    Java文件操作一例:Copy 复制文件,虽然是复制文件,不过通过本源码你可以学习很多相关的Java基础技巧,比如Java对文件的事件处理、取得目录内容的事件处理、如何弹出文件选择器、如何得到选择文件的绝对路径、如何...

    java文件操作大全.chm

    java文件操作大全.chm

    java 文件操作工具

    java 文件操作 压缩文件 解压文件 复制文件 复制文件夹

    java 文件操作工具类

    java 文件操作工具类

    java 文件操作大全107种情况

    java 文件操作 包括 文件删除 导出jsp Word 格式文件 ,文件合并修改等。

    《Java文件操作大全》电子书

    《Java文件操作大全》电子书 本文汇集常用文件操作方法,包括文件的建立/检查与删除,目录的建立/检查与删除,取出目录中文件,文件属性的取得,逐行读取数据等等。

    java 文件操作(对文件的输入输出)

    在Java编程语言中,文件操作是一项基础且重要的任务,它涉及到对文件的读取、写入、创建、删除等操作。文件操作主要依赖于Java的I/O(Input/Output)库,包括字节流(Byte Stream)和字符流(Character Stream),...

    Java文件操作大全

    最全的java文件操作大全,包括文件的存储,建立,判断文件是否存在,建立文件删除文件,附加源码!!!

    java 文件操作总汇

    java 文件操作 ;base64--转码与解码 ;excel --读写 ;properties--读 ; txt--读写 ; xml --读写 ;压缩包-- 解压,打包; zip --解压,打包 ;调用本地exe

    Java文件操作方法总结

    Java文件操作中的一些常用方法的总结,可以参考参考啦!

Global site tag (gtag.js) - Google Analytics