java 文件及文件夹的操作

package com.insigma.group1.yepengfei.io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
import java.net.URL;
import java.net.URLConnection;
import java.util.Iterator;

import com.insigma.group2.jianghaiting.Test.fileinputStream;

public class FileHelper {

	private int buffer_size = 1024;

	public void setBuffer_size(int bufferSize) {
		buffer_size = bufferSize;
	}

	/**
	 * 以字节为单位将一个单独的文件进行拷贝,适合图片,视频和音频的拷贝
	 * 
	 * @param curFile
	 *            ,要拷贝的源文件
	 * @param destFile
	 *            ,拷贝到的目标文件
	 */
	public void copyFileByByte(File srcFile, File destFile) {

		try {

			// inputStream从源文件中读取,outputStream将数据输出到目标文件
			InputStream inputStream = new BufferedInputStream(
					new FileInputStream(srcFile));
			OutputStream outputStream = new BufferedOutputStream(
					new FileOutputStream(destFile));
			int len = -1;
			byte[] buf = new byte[buffer_size];

			// 先读再写
			while ((len = inputStream.read(buf)) != -1) {
				outputStream.write(buf, 0, len);
				outputStream.flush();
			}

			// 关闭流
			outputStream.close();
			inputStream.close();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 以字符为单位将一个单独的文件进行拷贝,适合文本文件的拷贝
	 * 
	 * @param curFile
	 *            ,要拷贝的源文件
	 * @param destFile
	 *            ,拷贝到的目标文件
	 */
	public void copyFileByChar(File srcFile, File destFile) {

		try {

			// reader从源文件中读取,writer将数据输出到目标文件
			Reader reader = new BufferedReader(new FileReader(srcFile));
			Writer writer = new BufferedWriter(new FileWriter(destFile));
			char[] cbuf = new char[buffer_size];
			int len = -1;

			while ((len = reader.read(cbuf)) != -1) {
				writer.write(cbuf, 0, len);
				writer.flush();
			}

			// 关闭流
			writer.close();
			reader.close();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 将一个文件夹进行拷贝
	 * 
	 * @param curFile
	 *            ,要拷贝的源文件夹
	 * @param destFile
	 *            ,拷贝到的目标文件夹
	 * @see copyFileByByte(File srcFile, File destFile)
	 */
	public void copyFolder(File srcFile, File destFile) {

		// 如果目标文件夹不存在则创建
		if (!destFile.exists())
			destFile.mkdirs();

		// 列出srcFile中的所有文件和文件夹
		File[] files = srcFile.listFiles();
		File tmpFile;

		for (File file : files) {
			if (file.isFile()) {
				// 如果file是文件
				tmpFile = new File(destFile.getAbsoluteFile() + File.separator
						+ file.getName());
				copyFileByByte(file, tmpFile);
			} else {
				// 如果file是文件夹
				tmpFile = new File(destFile.getAbsoluteFile() + File.separator
						+ file.getName());
				copyFolder(file, tmpFile);
			}
		}

	}

	/**
	 * 以字节为单位将一个单独的文件进行剪切,适合图片,视频和音频的拷贝
	 * 
	 * @param srcFile
	 *            ,要剪切的源文件
	 * @param destFile
	 *            ,剪切到的目标文件
	 */
	public void cutFileByByte(File srcFile, File destFile) {
		copyFileByByte(srcFile, destFile);
		deleteFile(srcFile);
	}

	/**
	 * 以字符为单位将一个单独的文件进行剪切,适合图片,视频和音频的拷贝
	 * 
	 * @param srcFile
	 *            ,要剪切的源文件
	 * @param destFile
	 *            ,剪切到的目标文件
	 */
	public void cutFileByChar(File srcFile, File destFile) {
		copyFileByChar(srcFile, destFile);
		deleteFile(srcFile);
	}

	/**
	 * 剪切文件夹
	 * @param srcFile ,要剪切的源文件夹
	 * @param destFile,剪切到的目标文件夹
	 */
	public void cutFolder(File srcFile, File destFile) {
		copyFolder(srcFile, destFile);
		deleteFolder(srcFile);
	}
	/**
	 * 删除文件
	 * 
	 * @param srcFile
	 *            ,需要删除的文件
	 */
	public void deleteFile(File srcFile) {
		srcFile.delete();
	}

	/**
	 * 删除文件夹以及文件夹下面的所有文件
	 * 
	 * @param srcFile
	 */
	public void deleteFolder(File srcFile) {
		File[] files = srcFile.listFiles();

		for (File file : files) {
			if (file.isFile()) {
				//如果是文件册删除
				file.delete();
			} else {
				//如果是路径册进入该文件夹
				deleteFolder(file);
			}
		}
		srcFile.delete();//在删除文件后再删除该文件夹
	}

	/**
	 * 从url下载文件到本地文件destFile
	 * @param url
	 * @param destFile
	 */
	public void downloadFromWeb(URL url, File destFile) {
		
		try {
			URLConnection urlConnection=url.openConnection();
			InputStream inputStream=new BufferedInputStream(urlConnection.getInputStream());
			OutputStream outputStream=new BufferedOutputStream(new FileOutputStream(destFile));
			byte[] b=new byte[buffer_size];
			int len=-1;
			
			while((len=inputStream.read(b))!=-1) {
				outputStream.write(b);
				outputStream.flush();
			}
			
			//关闭流
			outputStream.close();
			inputStream.close();
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
}
 

你可能感兴趣的:(java)