package org.yeshi.utils; import java.io.*; import javax.servlet.http.HttpServletRequest; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.io.IOUtils; public class FileUtil { @SuppressWarnings("deprecation") public static String getRealPath(HttpServletRequest request, String folderName) { String f = request.getRealPath(folderName); if (!new File(f).exists()) new File(f).mkdirs(); return f; } public static String getFileMD5(File file) throws IOException { FileInputStream fis = new FileInputStream(file); String md5 = DigestUtils.md5Hex(IOUtils.toByteArray(fis)); IOUtils.closeQuietly(fis); return md5; } public static void deleteFileDir(File path) { if (!path.exists()) return; if (path.isFile()) { path.delete(); return; } File[] files = path.listFiles(); for (int i = 0; i < files.length; i++) { deleteFileDir(files[i]); } path.delete(); } /** * 将输入流存为本地文件 * * @param inputStream * @param path * @return * @throws IOException */ public static String saveAsFile(InputStream inputStream, String path) throws IOException { if (!new File(path).exists()) { new File(path).createNewFile(); } FileOutputStream fileOut = new FileOutputStream(new File(path)); byte[] buf = new byte[1024 * 8]; while (true) { int read = 0; if (inputStream != null) { read = inputStream.read(buf); } if (read == -1) { break; } fileOut.write(buf, 0, read); } fileOut.close(); return path; } /** * 获取缓存文件夹目录 * * @return */ public static String getCacheDir() { String os = System.getProperty("os.name"); if (os.toLowerCase().startsWith("win")) { File f = new File("D:/cache"); if (!f.exists()) f.mkdirs(); return f.getPath(); } else { File f = new File("/usr/local/cache"); if (!f.exists()) f.mkdirs(); return f.getPath(); } } /** * 将输入流存为本地文件 * * @param b * @param path * @return * @throws IOException */ public static String saveAsFileByte(byte[] b, String path) throws IOException { if (!new File(path).exists()) { new File(path).createNewFile(); } FileOutputStream fileOut = new FileOutputStream(path); fileOut.write(b); fileOut.flush(); fileOut.close(); return path; } /** * 复制inputStream * @param input * @return */ public static ByteArrayOutputStream cloneInputStream(InputStream input) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len; while ((len = input.read(buffer)) > -1) { baos.write(buffer, 0, len); } baos.flush(); return baos; } catch (IOException e) { e.printStackTrace(); return null; } } }