java文件和文件夹的增删复制

在使用java进行开发时经常会用到文件和文件夹的增删复制等方法,我写了一个小工具类,和大家分享,希望大家指正:

package com.wangpeng.utill;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.PrintWriter;

/**
 * @author wangpeng
 *
 */
public class ToolOfFile {

	/**
	 * 创建文件夹
	 *
	 * @param folderPath
	 *            文件夹目录
	 * @throws Exception
	 */
	public static void newFolder(String folderPath) throws Exception {
		try {
			java.io.File myFolder = new java.io.File(folderPath);
			if (!myFolder.exists()) {
				myFolder.mkdir();
			}
		} catch (Exception e) {
			throw e;
		}
	}

	/**
	 * 创建文件
	 *
	 * @param filePath
	 *            文件路径
	 * @throws Exception
	 */
	public static void newFile(String filePath) throws Exception {
		try {
			File myFile = new File(filePath);
			if (!myFile.exists()) {
				myFile.createNewFile();
			}
		} catch (Exception e) {
			throw e;
		}
	}

	/**
	 * 创建文件,并写入内容
	 *
	 * @param filePath
	 *            文件路径
	 * @param fileContent
	 *            被写入的文件内容
	 * @throws Exception
	 */
	public static void newFile(String filePath, String fileContent)
			throws Exception {
		// 用来写入字符文件的便捷类
		FileWriter fileWriter = null;
		// 向文本输出流打印对象的格式化表示形式,使用指定文件创建不具有自动行刷新的新
		PrintWriter printWriter = null;
		try {
			File myFile = new File(filePath);
			if (!myFile.exists()) {
				myFile.createNewFile();
			}

			fileWriter = new FileWriter(myFile);
			printWriter = new PrintWriter(fileWriter);

			printWriter.print(fileContent);
			printWriter.flush();
		} catch (Exception e) {
			throw e;
		} finally {
			if (printWriter != null) {
				printWriter.close();
			}
			if (fileWriter != null) {
				fileWriter.close();
			}
		}
	}

	/**
	 * 拷贝文件
	 *
	 * @param oldPath
	 *            被拷贝的文件
	 * @param newPath
	 *            拷贝到的文件
	 * @throws Exception
	 */
	public static void copyFile(String oldPath, String newPath)
			throws Exception {
		InputStream inStream = null;
		FileOutputStream outStream = null;
		try {
			int byteread = 0;
			File oldfile = new File(oldPath);
			// 文件存在时
			if (oldfile.exists()) {
				inStream = new FileInputStream(oldfile);
				outStream = new FileOutputStream(newPath);

				byte[] buffer = new byte[1444];
				while ((byteread = inStream.read(buffer)) != -1) {
					outStream.write(buffer, 0, byteread);
				}
				outStream.flush();
			}
		} catch (Exception e) {
			throw e;
		} finally {
			if (outStream != null) {
				outStream.close();
			}
			if (inStream != null) {
				inStream.close();
			}
		}
	}

	/**
	 * 拷贝文件
	 * @param inStream 被拷贝的文件的输入流
	 * @param newPath 被拷贝到的目标
	 * @throws Exception
	 */
	public static void copyFile(InputStream inStream, String newPath)
			throws Exception {
		FileOutputStream outStream = null;
		try {
			int byteread = 0;
			outStream = new FileOutputStream(newPath);
			byte[] buffer = new byte[1444];
			while ((byteread = inStream.read(buffer)) != -1) {
				outStream.write(buffer, 0, byteread);
			}
			outStream.flush();
		} catch (Exception e) {
			throw e;
		} finally {
			if (outStream != null) {
				outStream.close();
			}
			if (inStream != null) {
				inStream.close();
			}
		}
	}

	/**
	 * 复制文件夹
	 *
	 * @param oldPath
	 *            被复制的文件夹路径
	 * @param newPath
	 *            被复制到的文件夹路径
	 * @throws Exception
	 */
	public static void copyFolder(String oldPath, String newPath)
			throws Exception {
		try {
			(new File(newPath)).mkdirs(); // 如果文件夹不存在 则建立新文件夹
			File a = new File(oldPath);
			String[] file = a.list();
			File tempIn = null;
			for (int i = 0; i < file.length; i++) {
				if (oldPath.endsWith(File.separator)) {
					tempIn = new File(oldPath + file[i]);
				} else {
					tempIn = new File(oldPath + File.separator + file[i]);
				}

				if (tempIn.isFile()) {
					copyFile(tempIn.getAbsolutePath(),
							newPath + "/" + (tempIn.getName()).toString());
				} else if (tempIn.isDirectory()) {// 如果是子文件夹
					copyFolder(oldPath + "/" + file[i], newPath + "/" + file[i]);
				}
			}
		} catch (Exception e) {
			throw e;
		}
	}

	/**
	 * 删除文件
	 *
	 * @param filePathAndName
	 */
	public static void delFileX(String filePathAndName) {
		File myDelFile = new File(filePathAndName);
		myDelFile.delete();
	}

	/**
	 * 删除文件夹
	 *
	 * @param path
	 */
	public static void delForder(String path) {
		File delDir = new File(path);
		if (!delDir.exists()) {
			return;
		}
		if (!delDir.isDirectory()) {
			return;
		}
		String[] tempList = delDir.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();
			} else if (temp.isDirectory()) {
				// 删除完里面所有内容
				delForder(path + "/" + tempList[i]);
			}
		}
		delDir.delete();
	}

	public static void main(String[] args) {
		String oldPath = "F:/test/aaa/";
		String newPath = "F:/test/bbb/";

		try {
			// ToolOfFile.newFolder("F:/test/hello/");
			// ToolOfFile.newFile("F:/test/hello/world.txt","我爱你,the world!");
			ToolOfFile.copyFolder(oldPath, newPath);
			// ToolOfFile.delForder("F:/test/hello");
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("OK");
	}
}

java文件和文件夹的增删复制,布布扣,bubuko.com

时间: 2024-08-03 10:02:52

java文件和文件夹的增删复制的相关文章

java文件和目录的增删复制

在使用java进行开发时常常会用到文件和目录的增删复制等方法.我写了一个小工具类.和大家分享,希望大家指正: package com.wangpeng.utill; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.InputStream; import java.io.PrintWriter

java移动文件夹、 慎用java file.renameTo(f)方法 、 java从一个目录复制文件到另一个目录下 、 java代码完成删除文件、文件夹 、

java移动文件夹(包含子文件和子文件夹): http://blog.csdn.net/yongh701/article/details/45070353 慎用java    file.renameTo(f)方法: http://www.cnblogs.com/mrwangblog/p/3934506.html 注意看结果,从C盘到E盘失败了,从C盘到D盘成功了.因为我的电脑C.D两个盘是NTFS格式的,而E盘是FAT32格式的.所以从C到E就是上面文章所说的"file systems"

黑马程序员-JAVA学习之文件夹的复制和遍历所有文件

--------android培训.java培训.期待与你交流!-------- JAVA的文件夹复制由于不知道文件夹里面有多少文件夹,所以使用递归方法遍历里面的所有文件夹和文件,如果是文件,则直接复制到目标文件夹,如果是文件夹,则的目标地方创建对应的同名文件夹,由于文件有各种各样的类型,比如视频,文档,图片等.所以要用到的主要是字节流对象,而不是用字符流对象,在这里用到的几个类分别是 1.File类,文件和目录路径名的抽象表示形式.(即表示既可以是一个文件,也可以是一个文件夹,是一个有分隔符的

java复制文件与文件夹

复制文件或文件夹时,可以写一个方法,接受两个File类型参数.一个是要复制的文件,另一个是要复制的地方.方法具体大概是这样,先判断 源文件是文件还是文件夹,如是文件,就在目标路径里用字节流复制该文件.关键在于如何在目标路径里复制文件.可以创建一个File对象参数为目标对象+源文件.getName().如果是文件夹,就在目标路径里复制一个文件夹,即创建一个File对象构造参数为目标+源文件路径.getName. 在用File对象的 mkdir 在本地创建文件夹. 然后获取要复制的文件夹中的文件.遍

Eclipse点击工程结构里任意文件或文件夹变拖动(或复制)的bug

本文为原创文章,欢迎转载,但请注明出处http://www.cnblogs.com/yexiubiao/p/5204601.html,未在文章页面明显位置给出原文连接的,将保留追究法律责任的权利. 在使用Eclipse做Android开发编辑布局文件时,会遇到当点击左侧工程结构里的文件或文件夹时(例如点击红框1处文件),系统自动弹出对话框,让你重命名改文件(红框2),让人特别难受. 这是Eclipse或ADT的一个bug,Eclipse把我们的点击操作理解成拖动操作了(结果表现为文件被复制或移动

【Java】移动文件夹及其所有子文件与子文件夹

在Java移动文件夹及其所有子文件与子文件夹可以有如下的一段简单的方法来说明: public static void moveFolder(String oldPath, String newPath) { //先复制文件 copyFolder(oldPath, newPath); //则删除源文件,以免复制的时候错乱 deleteDir(new File(oldPath)); } 不应该直接剪切文件,防止在剪切的时候出错,导致这样那样的问题. 在Java复制文件夹及其所有子文件与子文件夹,在<

java file 操作之创建、删除文件及文件夹

本文章向大家讲解java文件的基本操作,包括java创建文件和文件夹.java删除文件.java获取指定目录的全部文件.java判断指定路径是否为目录以及java搜索指定目录的全部内容等.请看下面实例. 创建文件File 的两个常量(File.separator.File.pathSeparator). 直接在windows下使用\进行分割是可以的.但是在linux下就不是\了.所以,要想使得我们的代码跨平台,更加健壮,所以,大家都采用这两个常量吧. public static void cre

Java创建、重命名、删除文件和文件夹(转)

Java的文件操作太基础,缺乏很多实用工具,比如对目录的操作,支持就非常的差了.如果你经常用Java操作文件或文件夹,你会觉得反复编写这些代码是令人沮丧的问题,而且要大量用到递归. 下面是的一个解决方案,借助Apache Commons IO工具包(commons-io-1.1.jar)来简单实现文件(夹)的复制.移动.删除.获取大小等操作. import org.apache.commons.io.FileUtils; import org.apache.commons.io.filefilt

IO流 复制文件及文件夹

1 package io; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.OutputStream; 9 import java.util.Scanner; 10 11 public class copy