0
点赞
收藏
分享

微信扫一扫

文件操作工具类

ixiaoyang8 2022-08-05 阅读 75

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;

/**
* 文件操作工具类
*
* @author shi 2020年5月12日14:10:52
*/
public class FileUtil {
// 开始复制
public static void copy(String src, String newpath) {
File file = new File(src);
if (file.isFile()) {
fileCopy(file.getPath(), newpath + "/" + file.getName());
} else if (file.isDirectory()) {
File[] fs = file.listFiles();
// 创建文件夹
File file2 = new File(newpath);
if (!file2.exists()) {
file2.mkdirs();
}
if (fs != null) {
for (File f : fs) {
if (f.isFile()) {
fileCopy(f.getPath(), newpath + "/" + f.getName()); // 调用文件拷贝的方法
} else if (f.isDirectory()) {
copy(f.getPath(), newpath + "/" + f.getName());
}
}
}
} else {
System.out.println("文件异常");
}
}

// 复制文件
public static void fileCopy(String src, String newpath) {
FileOutputStream fos = null;
FileInputStream fis = null;
try {
fos = new FileOutputStream(newpath);
fis = new FileInputStream(src);
byte[] buf = new byte[2048];
int len = 0;
while ((len = fis.read(buf)) != -1) {
fos.write(buf, 0, len);
}
fos.flush();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("复制失败");
} finally {
try {
if (fis != null)
fis.close();
fos.close();
} catch (IOException e) {
throw new RuntimeException("读取失败");
}
}
}

// 删除所有文件及文件夹
public static boolean deleteDir(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
}
}
// 目录此时为空,可以删除
return dir.delete();
}

// 解压文件
public static Map<String,String> decompress(File uploadfile) {
ZipFile zf = null;
InputStream is = null;
FileOutputStream fos = null;
String assemblyName = uploadfile.getName().substring(0, uploadfile.getName().lastIndexOf("."));
int index;
String osName = System.getProperty("os.name");
if(osName.indexOf("Windows")>=0) {
index = uploadfile.getAbsolutePath().lastIndexOf("\\");
}else {
index = uploadfile.getAbsolutePath().lastIndexOf("/");
}
Map<String,String> returnMap=new HashMap<String,String>();
boolean frist = true;
try {
zf = new ZipFile(uploadfile);
Enumeration entries = zf.getEntries();
ZipEntry entry = null;
while (entries.hasMoreElements()) {
entry = (ZipEntry) entries.nextElement();
System.out.println("正在解压文件---->" + entry.getName());
if (entry.isDirectory()) {
} else {
File f =null;
if(entry.getName().indexOf("images/thumbnail/")>=0) {
String imgtype = entry.getName().substring(entry.getName().lastIndexOf("."),entry.getName().length());
f = new File(uploadfile.getAbsolutePath().substring(0,index+1) +assemblyName+ "/images/thumbnail/"+assemblyName+imgtype);
}else if(entry.getName().indexOf("/options")>=0){
f = new File(uploadfile.getAbsolutePath().substring(0,index+1) +assemblyName+"/options/"+assemblyName+".json");
}else {
f = new File(uploadfile.getAbsolutePath().substring(0,index+1) + entry.getName());
}
if (!f.exists()) {
File dirs = f.getParentFile();
dirs.mkdirs();
}
f.createNewFile();
is = zf.getInputStream(entry);
fos = new FileOutputStream(f);
//临时处理
if(entry.getName().indexOf("images/thumbnail/")>=0) {
returnMap.put("img", entry.getName().substring(entry.getName().lastIndexOf("/")+1, entry.getName().length()));
}
if(entry.getName().indexOf("/options")>=0) {
returnMap.put("option", entry.getName().substring(entry.getName().lastIndexOf("/")+1, entry.getName().length()));
}
// 将压缩文件内容写入到这个文件中
try {
int count;
byte[] buf = new byte[8192];
while ((count = is.read(buf)) != -1) {
fos.write(buf, 0, count);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (is != null)
is.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally {
try {
if (is != null)
is.close();
fos.close();
zf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return returnMap;
}

/**
* 把一个文件转化为byte字节数组。
*
* @return
*/
public static byte[] fileConvertToByteArray(File file) {
byte[] data = null;

try {
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream baos = new ByteArrayOutputStream();

int len;
byte[] buffer = new byte[1024];
while ((len = fis.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}

data = baos.toByteArray();

fis.close();
baos.close();
} catch (Exception e) {
e.printStackTrace();
}

return data;
}
}

 



举报

相关推荐

0 条评论