You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

190 lines
5.6 KiB

package com.dxhy.common.util;
import cn.hutool.core.codec.Base64;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.HttpClients;
import java.io.*;
/**
* @author jiaohongyang
*/
public class FileUtil {
private static boolean flag;
private static File file;
/**
* 添加内容到指定文件 如果该文件不存在则创建并添加内容 如果该文件已存在则添加内容到已有内容最后 flag为true则向现有文件中添加内容否则覆盖原有内容
*
* @throws IOException
* 异常信息
*
*/
public static void writeFile(String path, String fileName, String fileContent) throws IOException {
if (null == fileContent || "".equals(fileContent)) {
return;
}
if (!directoryIsExists(path)) {
return;
}
FileWriter writer = null;
try {
writer = new FileWriter(new File(path + fileName));
writer.write(fileContent);
writer.flush();
} finally {
if (null != writer) {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static boolean directoryIsExists(String path) {
File directory = new File(path);
if (directory.exists()) {
return true;
}
if (!directory.mkdir()) {
return false;
}
if (directory.canWrite()) {
return true;
}
return directory.setWritable(true);
}
/**
* 根据路径删除指定的目录或文件无论存在与否
*
* @param sPath
* 要删除的目录或文件 删除成功返回 true否则返回 false
*/
public static void deleteFolder(String sPath) {
flag = false;
file = new File(sPath);
// 判断目录或文件是否存在
if (!file.exists()) {
} else {
// 判断是否为文件
if (file.isFile()) {
deleteFile(sPath);
} else { // 为目录时调用删除目录方法
deleteDirectory(sPath);
}
}
}
/**
* 删除单个文件
*
* @param sPath
* 被删除文件的文件名 单个文件删除成功返回true否则返回false
*/
public static boolean deleteFile(String sPath) {
file = new File(sPath);
// 路径为文件且不为空则进行删除
return file.delete();
}
/**
* 删除目录文件夹以及目录下的文件
*
* @param sPath
* 被删除目录的文件路径 目录删除成功返回true否则返回false
*/
public static boolean deleteDirectory(String sPath) {
// 如果sPath不以文件分隔符结尾,自动添加文件分隔符
if (!sPath.endsWith(File.separator)) {
sPath = sPath + File.separator;
}
File dirFile = new File(sPath);
// 如果dir对应的文件不存在,或者不是一个目录,则退出
if (!dirFile.exists() || !dirFile.isDirectory()) {
return false;
}
flag = true;
// 删除文件夹下的所有文件(包括子目录)
File[] files = dirFile.listFiles();
for (File value : files) {
// 删除子文件
if (value.isFile()) {
flag = deleteFile(value.getAbsolutePath());
if (!flag) {
break;
}
} // 删除子目录
else {
flag = deleteDirectory(value.getAbsolutePath());
if (!flag) {
break;
}
}
}
if (!flag) {
return false;
}
// 删除当前目录
return dirFile.delete();
}
public static String fileToBase64(File file) {
if (file == null) {
return null;
}
String base64 = null;
FileInputStream fin = null;
try {
fin = new FileInputStream(file);
byte[] buff = new byte[fin.available()];
fin.read(buff);
base64 = Base64.encode(buff);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fin != null) {
try {
fin.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return base64;
}
//新增文件上传接口
public static String uploadFile(String url, byte[] bytes) {
HttpPost httpPost = new HttpPost(url);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addBinaryBody("file", bytes);
HttpEntity multipart = builder.build();
httpPost.setEntity(multipart);
String result = "";
try {
CloseableHttpResponse response = HttpClients.createDefault().execute(httpPost);
InputStream content = response.getEntity().getContent();
result = IOUtils.toString(content, "utf-8");
} catch (IOException e) {
throw new RuntimeException(e);
}
return result;
}
}