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.io.File`类,我们可以轻松实现这些操作。 **创建文件夹示例**: ```...
Java文件、文件夹权限修改的两种方法 在Java中,文件和文件夹权限的修改是非常重要的,特别是在Linux和Unix系统下。今天,我们将介绍两种修改文件和文件夹权限的方法,即使用File类和NIO方式。 使用File类 File类...
在JDK 7及以上版本中,Java提供了一种更加高效且灵活的方式来删除文件,包括递归删除整个文件夹及其子文件,这主要通过`java.nio.file`包中的`Files`类和`SimpleFileVisitor`类来实现。下面我们将详细探讨如何实现这...
通过以上介绍可以看出,在Java中,利用`java.io.File`类可以轻松地完成创建和删除文件及文件夹的操作。需要注意的是,对于删除文件夹的操作,如果文件夹非空,则需要先递归删除其中的所有文件和子文件夹后才能删除该...
在Java编程中,遍历文件夹内的文件是一项常见的任务,特别是在处理文件系统操作时。这个话题涉及到了Java的I/O(输入/输出)流、文件系统API和递归概念。以下是对这一主题的详细讲解: 首先,Java提供了一个强大的`...
根据提供的文件标题、描述、标签以及部分内容,我们可以总结出以下几个重要的Java知识点,这些知识点与文件操作密切相关: ### 1. 文件和目录的基本操作 #### 1.1 创建目录(文件夹) ```java public static void...
在Java编程语言中,移动文件夹下所有文件是一项常见的任务,尤其在处理文件系统操作时。这个场景描述了一个程序能够遍历指定文件夹中的所有文件,并将它们移动到另一个目标文件夹,同时保持原有的文件结构。这样的...
Java语言中判断文件或文件夹的存在性是一种基础操作,开发者在编写Java程序时经常需要判断文件或文件夹是否存在,以便进行相应的操作。在本文中,我们将详细介绍如何使用Java语言判断文件或文件夹的存在性。 一、...
System.out.println("新建文件夹操作出错"); e.printStackTrace(); } } ``` **注意点:** 1. **目录结构检查**:在创建文件夹之前,首先检查该路径是否存在。 2. **mkdir()与mkdirs()的区别**: - `mkdir()`:...
Java 递归删除文件和文件夹是 Java 编程中一个常见的操作。该操作需要使用 Java 的 File 类来实现,通过递归调用来删除文件和文件夹。 File 类 在 Java 中,File 类是用于表示文件和文件夹的类。该类提供了许多...
Java SMB(Server Message Block)库是用于在Java应用程序中访问和操作网络共享文件系统的工具,主要应用于Windows环境,但也可支持其他支持SMB协议的系统。SMB是一种网络通信协议,允许网络上的计算机共享文件、...
### JAVA对文件夹操作知识点详解 #### 一、概述 在Java编程中,对文件的操作是一项非常基础且重要的技能。无论是简单的文件读写还是复杂的文件系统管理,掌握这些技巧对于开发高质量的应用程序至关重要。本篇内容...
本教程将详细讲解如何使用Java的文件I/O(Input/Output)功能,通过递归的方式来实现文件及文件夹的复制,并着重关注在递归过程中变量属性的管理。 首先,我们需要理解Java中的`java.io`包,它提供了处理文件和流的...
在Java中,经常需要对文件系统进行操作,比如创建、删除文件或文件夹等。本篇文章将基于提供的代码示例,详细讲解如何使用Java来动态地删除文件和文件夹。 #### 一、基础知识准备 在深入探讨之前,我们需要了解几...
ame()); tOut.putArchiveEntry(tarEntry);...通过引入该库,我们可以轻松地在 Java 程序中实现文件和文件夹的压缩与解压缩功能。在实际开发中,注意错误处理、资源管理以及安全性等方面,以确保程序的健壮性和安全性。
在Java编程语言中,压缩文件夹到指定目录和指定名称是一项常见的任务,这通常涉及到对文件系统的操作和使用压缩库。Java提供了多种方法来实现这一功能,比如使用内置的`java.util.zip`包或者第三方库如Apache ...
此外,Java 7及更高版本提供了`Files.copy()`方法,它可以更简洁地完成文件和文件夹的复制,同时支持追加模式、保留文件属性和异常处理等功能。例如: ```java import java.nio.file.Files; import java.nio.file....
根据给定的信息,我们可以总结出以下关于如何使用Java代码创建文件夹的相关知识点: ### Java创建文件夹的基础概念 在Java中,创建文件夹通常涉及到`java.io.File`类的使用。`File`类提供了多种方法来操作文件系统...