文件从服务器下载到本地,文件删除 等

it2023-01-11  50

** import javax.servlet.http.HttpServletRequest; import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class FileUtil { /* * 根据指定URL将文件下载到指定目标位置 * urlPath 下载路径 * downloadDir 文件存放目录 */ public String downloadFile(HttpServletRequest request, String urlPath,String targetPaht){ File file = null; try { // 统一资源 URL url = new URL(urlPath); // 连接类的父类,抽象类 URLConnection urlConnection = url.openConnection(); // http的连接类 HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection; //设置超时 httpURLConnection.setConnectTimeout(1000*5); //设置请求方式,默认是GET httpURLConnection.setRequestMethod("GET"); // 设置字符编码 httpURLConnection.setRequestProperty("Charset", "UTF-8"); httpURLConnection.connect(); int fileLength = httpURLConnection.getContentLength(); BufferedInputStream bin = new BufferedInputStream(httpURLConnection.getInputStream()); String fileFullName = urlPath.substring(urlPath.lastIndexOf("/")); // 指定存放位置 String path = "C:" + File.separatorChar + fileFullName; file = new File(path); // 校验文件夹目录是否存在,不存在就创建一个目录 if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } OutputStream out = new FileOutputStream(file); int size = 0; int len = 0; byte[] buf = new byte[2048]; while ((size = bin.read(buf)) != -1) { len += size; out.write(buf, 0, size); System.out.println("下载了-------> " + len * 100 / fileLength + "%\n"); } System.out.println("C:"+ File.separatorChar + urlPath.substring(urlPath.lastIndexOf("/")).split("/")[1]); bin.close(); out.close(); System.out.println("文件下载成功!"); } catch (Exception e) { System.out.println("文件下载失败!"); e.printStackTrace(); }finally { return "C:"+ File.separatorChar + urlPath.substring(urlPath.lastIndexOf("/")).split("/")[1]; } } /** * @从制定URL下载文件并保存到指定目录 * @param url 请求的路径 * @param targetFilePath 文件将要保存的目录 * @param method 请求方法,包括POST和GET * @param targetName * @return */ public static String downloadFileToTartetPath(String url, String targetFilePath, String method, String targetName){ //System.out.println("fileName---->"+filePath); //创建不同的文件夹目录 File file=new File(targetFilePath); //判断文件夹是否存在 if (!file.exists()) { //如果文件夹不存在,则创建新的的文件夹 file.mkdirs(); } //判断文件的保存路径后面是否以/结尾 if (!targetFilePath.endsWith("/")) { targetFilePath += "/"; } //目标文件 路径 String targetFileAllPath = targetFilePath + targetName; FileOutputStream fileOut = null; HttpURLConnection conn = null; InputStream inputStream = null; try { // 建立链接 URL httpUrl=new URL(url); conn=(HttpURLConnection) httpUrl.openConnection(); //以Post方式提交表单,默认get方式 conn.setRequestMethod(method); conn.setDoInput(true); conn.setDoOutput(true); // post方式不能使用缓存 conn.setUseCaches(false); //连接指定的资源 conn.connect(); //获取网络输入流 inputStream=conn.getInputStream(); BufferedInputStream bis = new BufferedInputStream(inputStream); //模板文件 fileOut = new FileOutputStream(targetFileAllPath); BufferedOutputStream bos = new BufferedOutputStream(fileOut); byte[] buf = new byte[4096]; int length = bis.read(buf); //保存文件 while(length != -1) { bos.write(buf, 0, length); length = bis.read(buf); } bos.close(); bis.close(); conn.disconnect(); } catch (Exception e) { e.printStackTrace(); System.out.println("抛出异常!!"); } return targetFileAllPath; } // 删除目录及目录下的文件 public static void deleteAllFilesOfDir(File path) { if (!path.exists()) return; if (path.isFile()) { path.delete(); return; } File[] files = path.listFiles(); for (int i = 0; i < files.length; i++) { deleteAllFilesOfDir(files[i]); } path.delete(); } /** * 删除单个文件 * * @param fileName * 要删除的文件的文件名 * @return 单个文件删除成功返回true,否则返回false */ public static boolean deleteFile(String fileName) { File file = new File(fileName); // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除 if (file.exists() && file.isFile()) { if (file.delete()) { System.out.println("删除单个文件" + fileName + "成功!"); return true; } else { System.out.println("删除单个文件" + fileName + "失败!"); return false; } } else { System.out.println("删除单个文件失败:" + fileName + "不存在!"); return false; } } } ** String templatePath = "1http://192.168.10.17:80/group1/ampc/a.word"; String contractTemplatePath= "G:/zcy-new/hetongwenjian/"; String targetName =System.currentTimeMillis()+"hetongmoban.docx"; //将templatePath 的文件下载到 contractTemplatePath String outTemplatePath = FileUtil.downloadFileToTartetPath(templatePath,contractTemplatePath,"GET",targetName); //删除本地文件夹及文件 FileUtil.deleteAllFilesOfDir(new File(contractFilePathAll)); //删除单个文件 FileUtil.deleteFile(outTemplatePath);
最新回复(0)