`
oh_nerd
  • 浏览: 5196 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类

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 文件及文件夹 操作源码

    此文件支持对文件及文件夹结构的多种操作,其中包括: 读取文本文件内容 遍历指定路径下指定后缀的所有文件 新建目录 多级目录创建 新建文件 有编码方式的文件创建 删除文件 删除文件夹 删除指定文件夹下所有文件 ...

    java 文件以及文件夹操作代码

    ### Java 文件及文件夹操作详解 #### 一、概述 在Java编程中,对文件及文件夹的操作是一项基本且重要的技能。本文将详细介绍如何使用Java进行文件和文件夹的基本操作,包括创建文件/文件夹、删除文件/文件夹等。 ...

    java文件和文件夹操作大全

    ### Java文件和文件夹操作大全:深度解析与实践指南 #### 一、创建文件夹与文件 在Java中,创建文件夹与文件是基础而重要的功能。通过`java.io.File`类,我们可以轻松实现这些操作。 **创建文件夹示例**: ```...

    Java文件、文件夹权限修改的两种方法

    Java文件、文件夹权限修改的两种方法 在Java中,文件和文件夹权限的修改是非常重要的,特别是在Linux和Unix系统下。今天,我们将介绍两种修改文件和文件夹权限的方法,即使用File类和NIO方式。 使用File类 File类...

    java删除指定文件夹下文件

    在JDK 7及以上版本中,Java提供了一种更加高效且灵活的方式来删除文件,包括递归删除整个文件夹及其子文件,这主要通过`java.nio.file`包中的`Files`类和`SimpleFileVisitor`类来实现。下面我们将详细探讨如何实现这...

    java创建和删除文件夹、文件

    通过以上介绍可以看出,在Java中,利用`java.io.File`类可以轻松地完成创建和删除文件及文件夹的操作。需要注意的是,对于删除文件夹的操作,如果文件夹非空,则需要先递归删除其中的所有文件和子文件夹后才能删除该...

    Java 遍历文件夹内文件

    在Java编程中,遍历文件夹内的文件是一项常见的任务,特别是在处理文件系统操作时。这个话题涉及到了Java的I/O(输入/输出)流、文件系统API和递归概念。以下是对这一主题的详细讲解: 首先,Java提供了一个强大的`...

    java操作文件、文件夹

    根据提供的文件标题、描述、标签以及部分内容,我们可以总结出以下几个重要的Java知识点,这些知识点与文件操作密切相关: ### 1. 文件和目录的基本操作 #### 1.1 创建目录(文件夹) ```java public static void...

    java移动文件夹下所有文件

    在Java编程语言中,移动文件夹下所有文件是一项常见的任务,尤其在处理文件系统操作时。这个场景描述了一个程序能够遍历指定文件夹中的所有文件,并将它们移动到另一个目标文件夹,同时保持原有的文件结构。这样的...

    java判断文件或文件夹

    Java语言中判断文件或文件夹的存在性是一种基础操作,开发者在编写Java程序时经常需要判断文件或文件夹是否存在,以便进行相应的操作。在本文中,我们将详细介绍如何使用Java语言判断文件或文件夹的存在性。 一、...

    java创建和删除文件夹、文件.doc

    System.out.println("新建文件夹操作出错"); e.printStackTrace(); } } ``` **注意点:** 1. **目录结构检查**:在创建文件夹之前,首先检查该路径是否存在。 2. **mkdir()与mkdirs()的区别**: - `mkdir()`:...

    java递归删除文件和文件夹.pdf

    Java 递归删除文件和文件夹是 Java 编程中一个常见的操作。该操作需要使用 Java 的 File 类来实现,通过递归调用来删除文件和文件夹。 File 类 在 Java 中,File 类是用于表示文件和文件夹的类。该类提供了许多...

    JAVA SMB共享文件夹操作文件jar支持smb2、smb3.rar

    Java SMB(Server Message Block)库是用于在Java应用程序中访问和操作网络共享文件系统的工具,主要应用于Windows环境,但也可支持其他支持SMB协议的系统。SMB是一种网络通信协议,允许网络上的计算机共享文件、...

    JAVA 对文件夹操作

    ### JAVA对文件夹操作知识点详解 #### 一、概述 在Java编程中,对文件的操作是一项非常基础且重要的技能。无论是简单的文件读写还是复杂的文件系统管理,掌握这些技巧对于开发高质量的应用程序至关重要。本篇内容...

    java文件夹及文件复制

    本教程将详细讲解如何使用Java的文件I/O(Input/Output)功能,通过递归的方式来实现文件及文件夹的复制,并着重关注在递归过程中变量属性的管理。 首先,我们需要理解Java中的`java.io`包,它提供了处理文件和流的...

    java 删除文件或文件夹

    在Java中,经常需要对文件系统进行操作,比如创建、删除文件或文件夹等。本篇文章将基于提供的代码示例,详细讲解如何使用Java来动态地删除文件和文件夹。 #### 一、基础知识准备 在深入探讨之前,我们需要了解几...

    使用Java API进行tar.gz文件及文件夹压缩解压缩.docx

    ame()); tOut.putArchiveEntry(tarEntry);...通过引入该库,我们可以轻松地在 Java 程序中实现文件和文件夹的压缩与解压缩功能。在实际开发中,注意错误处理、资源管理以及安全性等方面,以确保程序的健壮性和安全性。

    Java代码 可以压缩文件夹到指定目录和指定名称,将文件或者文件夹中的文件转成base64格式

    在Java编程语言中,压缩文件夹到指定目录和指定名称是一项常见的任务,这通常涉及到对文件系统的操作和使用压缩库。Java提供了多种方法来实现这一功能,比如使用内置的`java.util.zip`包或者第三方库如Apache ...

    java中实现复制文件和文件夹

    此外,Java 7及更高版本提供了`Files.copy()`方法,它可以更简洁地完成文件和文件夹的复制,同时支持追加模式、保留文件属性和异常处理等功能。例如: ```java import java.nio.file.Files; import java.nio.file....

    java代码新建文件夹

    根据给定的信息,我们可以总结出以下关于如何使用Java代码创建文件夹的相关知识点: ### Java创建文件夹的基础概念 在Java中,创建文件夹通常涉及到`java.io.File`类的使用。`File`类提供了多种方法来操作文件系统...

Global site tag (gtag.js) - Google Analytics