package com.sinosoft.qb.util.file;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.StringReader;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.AndFileFilter;
import org.apache.commons.io.filefilter.DirectoryFileFilter;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.io.filefilter.NotFileFilter;
import org.apache.commons.io.filefilter.SuffixFileFilter;
import org.apache.log4j.Logger;
/**
* 文件工具箱
*
* @author leizhimin 2008-12-15 13:59:16
*/
public final class FileToolkit {
private static final Logger log = Logger.getLogger(FileToolkit.class);
/**
* 复制文件或者目录,复制前后文件完全一样。
*
* @param resFilePath
* 源文件路径
* @param distFolder
* 目标文件夹
* @IOException 当操作发生异常时抛出
*/
public static void copyFile(String resFilePath, String distFolder)
throws IOException {
File resFile = new File(resFilePath);
File distFile = new File(distFolder);
if (resFile.isDirectory()) {
FileUtils.copyDirectoryToDirectory(resFile, distFile);
} else if (resFile.isFile()) {
FileUtils.copyFileToDirectory(resFile, distFile, true);
}
}
/**
* 删除一个文件或者目录
*
* @param targetPath
* 文件或者目录路径
* @IOException 当操作发生异常时抛出
*/
public static void deleteFile(String targetPath) throws IOException {
File targetFile = new File(targetPath);
if (targetFile.isDirectory()) {
FileUtils.deleteDirectory(targetFile);
} else if (targetFile.isFile()) {
targetFile.delete();
}
}
/**
* 移动文件或者目录,移动前后文件完全一样,如果目标文件夹不存在则创建。
*
* @param resFilePath
* 源文件路径
* @param distFolder
* 目标文件夹
* @IOException 当操作发生异常时抛出
*/
public static void moveFile(String resFilePath, String distFolder)
throws IOException {
File resFile = new File(resFilePath);
File distFile = new File(distFolder);
if (resFile.isDirectory()) {
FileUtils.moveDirectoryToDirectory(resFile, distFile, true);
} else if (resFile.isFile()) {
FileUtils.moveFileToDirectory(resFile, distFile, true);
}
}
/**
* 重命名文件或文件夹
*
* @param resFilePath
* 源文件路径
* @param newFileName
* 重命名
* @return 操作成功标识
*/
public static boolean renameFile(String resFilePath, String newFileName) {
String newFilePath = StringToolkit.formatPath(StringToolkit
.getParentPath(resFilePath) + "/" + newFileName);
File resFile = new File(resFilePath);
File newFile = new File(newFilePath);
return resFile.renameTo(newFile);
}
/**
* 读取文件或者目录的大小
*
* @param distFilePath
* 目标文件或者文件夹
* @return 文件或者目录的大小,如果获取失败,则返回-1
*/
public static long genFileSize(String distFilePath) {
File distFile = new File(distFilePath);
if (distFile.isFile()) {
return distFile.length();
} else if (distFile.isDirectory()) {
return FileUtils.sizeOfDirectory(distFile);
}
return -1L;
}
/**
* 判断一个文件是否存在
*
* @param filePath
* 文件路径
* @return 存在返回true,否则返回false
*/
public static boolean isExist(String filePath) {
return new File(filePath).exists();
}
/**
* 本地某个目录下的文件列表(不递归)
*
* @param folder
* ftp上的某个目录
* @param suffix
* 文件的后缀名(比如.mov.xml)
* @return 文件名称列表
*/
public static String[] listFilebySuffix(String folder, String suffix) {
IOFileFilter fileFilter1 = new SuffixFileFilter(suffix);
IOFileFilter fileFilter2 = new NotFileFilter(
DirectoryFileFilter.INSTANCE);
FilenameFilter filenameFilter = new AndFileFilter(fileFilter1,
fileFilter2);
return new File(folder).list(filenameFilter);
}
/**
* 将字符串写入指定文件(当指定的父路径中文件夹不存在时,会最大限度去创建,以保证保存成功!)
*
* @param res
* 原字符串
* @param filePath
* 文件路径
* @return 成功标记
*/
public static boolean string2File(String res, String filePath) {
boolean flag = true;
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
try {
File distFile = new File(filePath);
if (!distFile.getParentFile().exists())
distFile.getParentFile().mkdirs();
bufferedReader = new BufferedReader(new StringReader(res));
bufferedWriter = new BufferedWriter(new FileWriter(distFile));
char buf[] = new char[1024]; // 字符缓冲区
int len;
while ((len = bufferedReader.read(buf)) != -1) {
bufferedWriter.write(buf, 0, len);
}
bufferedWriter.flush();
bufferedReader.close();
bufferedWriter.close();
} catch (IOException e) {
flag = false;
e.printStackTrace();
}
return flag;
}
}
分享到:
相关推荐
在本项目中,"JavaFile文件操作"着重介绍了如何使用`File`类进行文件的基本操作,包括创建文件、复制文件或文件夹、删除文件或文件夹以及剪切文件或文件夹。以下是对这些功能的详细说明: 1. **创建文件** 使用`...
java 中很多人对File迷惑,以为它是对文件内容操作的,其实不是的,它主要是文件及其目录的操作。 这里实例是一些文件目录查看器。
在Java编程语言中,文件操作是一项基础且至关...不过,这里主要讲解了`File`类的基本使用,希望对你复习Java文件操作有所帮助。记住,良好的文件管理是任何项目的基础,确保正确处理文件能有效防止数据丢失和程序错误。
本文将详细介绍Java中关于文件操作的API,特别是`java.io.File`类提供的各种方法。 首先,创建文件是文件操作的第一步。你可以通过传递一个包含路径的字符串给`File`类的构造函数来创建文件对象。例如: ```java ...
Java 文件操作和文件流是Java编程中至关重要的部分,它们允许开发者进行文件的创建、读取、写入、删除等操作。以下是对标题和描述中所述知识点的详细说明: 一、创建文件 在Java中,我们可以使用`File`类来创建文件...
Java中的File类是进行文件和目录操作...总的来说,Java的File类提供了全面的文件操作功能,涵盖了创建、删除、查询和访问文件及目录的各种场景。理解并熟练运用这些方法,能够帮助开发者高效地管理和操作文件系统资源。
Java中的File类是进行文件和目录操作的核心工具,它提供了丰富的功能来创建、删除、查询文件及目录的各种属性。在Java中,File类是java.io包的一部分,它并不直接涉及文件内容的读写,而是专注于文件和目录的路径名...
在Java中,`java.io.File`类是进行文件操作的主要工具,它提供了丰富的属性和方法来处理文件和目录。 首先,我们来看如何创建文件。创建文件最常用的方式是通过构造函数传递一个表示文件路径的字符串。例如,`new ...
Java 文件操作和文件流是Java编程中至关重要的部分,它们允许开发者进行文件的创建、读取、写入、删除以及管理文件系统中的目录结构。在Java中,`java.io.File`类是处理文件和目录的核心类,提供了丰富的API来操作...
这个类通常是为了提供更方便的文件操作方法,比如上述的复制、删除等。这些方法可能是静态的,可以直接通过类名调用,如`FileUtils.copyDirectory()`。 总的来说,Java的`File`类提供了丰富的文件和目录操作接口,...
这些基本操作是Java文件操作的基础,对于理解和处理文件系统操作至关重要。同时,了解如何处理异常(如`IOException`)也是十分重要的,这可以确保程序在遇到问题时能够优雅地处理并提供反馈。在进行文件操作时,...
Java提供了一套完整的API,其中`java.io.File`类是进行文件操作的基础。本文将深入探讨如何使用Java `File`类进行文件操作,包括创建、删除、复制文件和文件夹,以及获取文件的扩展名和路径。 首先,`File`类的实例...
在Java 7中,文件操作得到了显著的改进,引入了`java.nio.file`包,其中最重要的新特性之一就是Path类的出现。Path类是Java 7文件系统接口(FileSystem API)的核心部分,它提供了一种抽象的方式来表示文件或目录的...
在Java中,可以通过`java.io.File`类提供的方法来判断文件的某些属性,例如判断文件是否为隐藏文件或只读文件。具体的方法包括: 1. **判断文件是否隐藏**:使用`File.isHidden()`方法。需要注意的是,此方法并非...
Java文件操作是编程中不可或缺的一部分,尤其是在处理I/O流、文件读写以及文件管理时。Apache Commons IO是一个非常实用的库,它为Java开发者提供了大量的工具类和方法,以简化文件操作。在这个场景中,我们关注的是...
java视频教程 Java文件操作 JavaFile
在Java编程语言中,文件操作是一项基础且重要的任务。这篇博文主要探讨了如何使用Java进行常见的文件操作,包括创建、读取、写入、删除文件以及处理目录等。以下是对这些知识点的详细说明: 1. **创建文件**: 在...
Java文件操作是Java编程中必不可少的部分,它涵盖了创建、读取、写入、删除以及管理文件和目录的各种功能。在Java中,文件操作主要通过java.io包中的类和接口实现。下面将对Java文件操作进行详细的总结,并提供相关...