您的位置:首页 > 编程语言 > Java开发

Java文件操作工具

2015-02-05 00:00 183 查看
摘要: 移动目录或者文件, 将一个文件夹下所有文件移动到另一个文件夹下,将指定文件移动到目的目录,刪除指定目录和其下所有子目录和文件,如果指定的是文件则直接删除

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

/**
*
* @Title : FileUtils
* @File Name : FileUtils.java
* @Description : 文件操作工具类
* @Date : 2014年8月10日
* @author : 王鸿运
* @version : 1.0
* @Others :
* @History 1.<br/>
*          Date : <br/>
*          Author : <br/>
*          Modification: <br/>
*/
public class FileUtils {

public static final String FILE_SEP = System.getProperty("file.separator");

/**
*
* @Function  :  moveFile
* @Desc  :  移动目录或者文件
* @Author  : 王鸿运
* @param srcFilePath  源文件(目录)路径
* @param destFilePath  目的文件(目录)路径
* @return  true:操作成功,false:操作失败
*/
public static boolean moveFile(String srcFilePath, String destFilePath) {
File srcFile = new File(srcFilePath);
if (!srcFile.exists()) {
return false;
}

if (srcFile.isDirectory()) {
File[] subFiles = srcFile.listFiles();
for (File file : subFiles) {
moveFile(file.getAbsolutePath(), destFilePath +FILE_SEP+ file.getName());
}
}

File destFile = new File(destFilePath);
File destParentFile = destFile.getParentFile();
if (!destParentFile.exists()) {
destParentFile.mkdirs();
}
srcFile.renameTo(destFile);

return true;
}

/**
* @Function  :  moveChildren
* @Desc  :  移动指定目录下所有的子目录和文件到目的目录
* @Author  : 王鸿运
* @param srcFilePath  源目录路径
* @param destFilePath  目的路径
* @return  true:操作成功,false:操作失败
*/
public static boolean moveAllChildren(String srcFilePath, String destFilePath) {
File srcDir = new File(srcFilePath);
if (!srcDir.exists() || !srcDir.isDirectory()) {
return false;
}

File destDir = new File(destFilePath);
if (destDir.exists()) {
if ( destDir.isFile()) {
destDir.delete();
destDir = new File(destFilePath);
destDir.mkdir();
}
} else {
destDir.mkdirs();
}

File[] children = srcDir.listFiles();
for (File file : children) {
moveFile(file.getAbsolutePath(), destFilePath);
}

return true;
}

/**
*
* @Function  :  moveFiles
* @Desc  :  将指定文件移动到目的目录
* @Author  : 王鸿运
* @param srcFiles 源文件,支持多个路径参数
* @param destDirPath 目的目录
* @return true:操作成功,false:操作失败
*/
public static boolean moveFiles(String destDirPath, String ... srcFiles){
if (srcFiles == null || srcFiles.length == 0) {
return false;
}
File destDir = new File(destDirPath);

boolean destExists = true;
if (!destDir.exists()) {
destExists = destDir.mkdirs();
} else if(destDir.isFile()){
return false;
}

if (!destExists) {
return false;
}

for (String srcFilePath : srcFiles) {
File srcFile = new File(srcFilePath);
if (srcFile.exists() && srcFile.isFile()) {
srcFile.renameTo(new File(destDirPath + FILE_SEP + srcFile.getName()));
}
}
return true;
}

/**
*
* @Function : deleteSelfAndAllChildren
* @Desc : 刪除指定目录和其下所有子目录和文件,如果指定的是文件则直接删除
* @Author : 王鸿运
* @param dirPath 源目录或文件路径
* @return true:删除成功,false:删除失败
*/
public static boolean deleteSelfAndAllChildren(String dirPath) {
File srcFile = new File(dirPath);
if (!srcFile.exists()) {
return false;
}

if (srcFile.isFile()) {
srcFile.delete();
} else {
File[] children = srcFile.listFiles();

if (children.length == 0) {
srcFile.delete();
} else {
for (File file : children) {//先删除子文件和目录
deleteSelfAndAllChildren(file.getAbsolutePath());
}
//再删除本身
srcFile.delete();
}
}
return true;
}

/**
*
* @Function  :  deleteAllChildren
* @Desc  :  删除一个目录下所有的子目录和文件
* @Author  : 王鸿运
* @param dirPath
* @return true:删除成功,false:删除失败
*/
public static boolean deleteAllChildren(String dirPath){
File dir = new File(dirPath);
if (!dir.exists()) {
return false;
}
File[] children = dir.listFiles();
for (File file : children) {
deleteSelfAndAllChildren(file.getAbsolutePath());
}

return true;
}

/**
*
* @Function  :  unzipFile
* @Desc  :  解压指定的zip压缩文件到指定的目的目录
* @Author  : 王鸿运
* @param zipFilePath
* @param destDirPath
* @return
*/
@SuppressWarnings("unchecked")
public static boolean unzipFile(String zipFilePath, String destDirPath){
File srcFile = new File(zipFilePath);
if (!srcFile.exists() || srcFile.isDirectory()) {
return false;
}

File destDir = new File(destDirPath);
if (!destDir.exists()) {
destDir.mkdirs();
} else if (destDir.isFile()) {
return false;
}

ZipFile zipFile = null;
try {
zipFile = new ZipFile(srcFile);
Enumeration<ZipEntry> zipEntries = (Enumeration<ZipEntry>) zipFile.entries();
while(zipEntries.hasMoreElements()){
ZipEntry zipEntry = zipEntries.nextElement();
if (zipEntry.isDirectory()) {
String entryName = zipEntry.getName();
File tmpFile = new File(destDirPath + FILE_SEP + entryName);
if (!tmpFile.exists()) {
tmpFile.mkdirs();
}
} else {
System.err.println(zipEntry.getName());
InputStream input = zipFile.getInputStream(zipEntry);
String entryName = zipEntry.getName();
OutputStream output = new FileOutputStream(new File(destDirPath + FILE_SEP + entryName));
streamCopy(input, output);
}
}
} catch (IOException e) {
e.printStackTrace();
return false;
}
return true;
}

/**
* @Function  :  streamCopy
* @Desc  :  流复制
* @Author  : 王鸿运
* @param input  InputStream 输入流
* @param output OutputStream 输出流
* @return long 流长度
* @throws IOException
*/
public static long streamCopy(final InputStream input, final OutputStream output) throws IOException {
final byte[] buffer = new byte[8192];
int n = 0;
long count=0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
count += n;
}
return count;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: