java文件和目录的增删复制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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文件和目录的增删复制的主要内容,如果未能解决你的问题,请参考以下文章

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

VsCode 代码片段-提升研发效率

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

在Java中将文件从一个目录复制到另一个目录

Android Java:在 onCreateView() 中返回空视图的片段

Prometheus配置文件