标签:direct leo 文件路径 cat base log entry final mkdir
package utils;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* 文件操作工具类
*
* @author mickkong
*
*/
public class FileUtil {
/**
* 移动文件或者文件夹
*
* @param oldPath
* 源路径
* @param newPath
* 新路径
* @throws IOException
*/
public static void moveTo(String oldPath, String newPath) throws IOException {
copyFile(oldPath, newPath);
deleteFile(oldPath);
}
/**
* 删除文件或者文件夹
*
* @param filePath
* 文件路径
*/
public static void deleteFile(String filePath) {
File file = new File(filePath);
if (!file.exists()) {
return;
}
if (file.isDirectory()) {
File[] list = file.listFiles();
for (File f : list) {
deleteFile(f.getAbsolutePath());
}
}
file.delete();
}
/**
* 复制 文件或者文件夹
*
* @param oldPath
* 源路径
* @param newPath
* 新路径
* @throws IOException
*/
public static void copyFile(String oldPath, String newPath) throws IOException {
System.out.println("copy file from [" + oldPath + "] to [" + newPath + "]");
File oldFile = new File(oldPath);
if (oldFile.exists()) {
if (oldFile.isDirectory()) { // 如果是文件夹
File newPathDir = new File(newPath);
newPathDir.mkdirs();
File[] lists = oldFile.listFiles();
if (lists != null && lists.length > 0) {
for (File file : lists) {
copyFile(file.getAbsolutePath(), newPath.endsWith(File.separator) ? newPath + file.getName()
: newPath + File.separator + file.getName());
}
}
} else {
InputStream inStream = new FileInputStream(oldFile); // 读入原文件
FileOutputStream fs = new FileOutputStream(newPath);
write2Out(inStream, fs);
inStream.close();
}
}
}
/**
* 重命名文件
*
* @param file
* 文件
* @param name
* 新文件名
* @return
*/
public static File renameFile(File file, String name) {
String fileName = file.getParent() + File.separator + name;
File dest = new File(fileName);
file.renameTo(dest);
return dest;
}
/**
* 压缩多个文件
*
* @param zipFileName
* 压缩输出文件名
* @param files
* 需要压缩的文件
* @return
* @throws Exception
*/
public static File createZip(String zipFileName, File... files) throws Exception {
File outFile = new File(zipFileName);
ZipOutputStream out = null;
BufferedOutputStream bo = null;
try {
out = new ZipOutputStream(new FileOutputStream(outFile));
bo = new BufferedOutputStream(out);
for (File file : files) {
zip(out, file, file.getName(), bo);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
bo.close();
} finally {
out.close();
}
}
return outFile;
}
/**
* 压缩单个文件
*
* @param zipFileName
* 压缩输出文件名
* @param inputFile
* 需要压缩的文件
* @return
* @throws Exception
*/
public static File createZip(String zipFileName, File inputFile) throws Exception {
File outFile = new File(zipFileName);
ZipOutputStream out = null;
BufferedOutputStream bo = null;
try {
out = new ZipOutputStream(new FileOutputStream(outFile));
bo = new BufferedOutputStream(out);
zip(out, inputFile, inputFile.getName(), bo);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
bo.close();
} finally {
out.close();
}
}
return outFile;
}
private static void zip(ZipOutputStream out, File f, String base, BufferedOutputStream bo) throws Exception { // 方法重载
if (f.isDirectory()) {
File[] fl = f.listFiles();
if (fl == null || fl.length == 0) {
out.putNextEntry(new ZipEntry(base + "/")); // 创建创建一个空的文件夹
} else {
for (int i = 0; i < fl.length; i++) {
zip(out, fl[i], base + "/" + fl[i].getName(), bo); // 递归遍历子文件夹
}
}
} else {
out.putNextEntry(new ZipEntry(base)); // 创建zip压缩进入 base 文件
System.out.println(base);
BufferedInputStream bi = new BufferedInputStream(new FileInputStream(f));
try {
write2Out(bi, out);
} catch (IOException e) {
} finally {
bi.close();
}
}
}
private static void write2Out(InputStream input, OutputStream out) throws IOException {
byte[] b = new byte[1024];
int c = 0;
while ((c = input.read(b)) != -1) {
out.write(b, 0, c);
out.flush();
}
out.flush();
}
}
标签:direct leo 文件路径 cat base log entry final mkdir
原文地址:http://www.cnblogs.com/mickkong/p/7352230.html