/** * 下载文件 * 参数 [{图片路径(path),自定义的图片名字(name)}...] */
public byte[] download(ArrayList pathList) { TrackerServer trackerServer = null; StorageServer storageServer = null; try { ClientGlobal.init("fdfs_client.properties"); TrackerClient trackerClient = new TrackerClient(); trackerServer = trackerClient.getConnection(); storageServer = trackerClient.getStoreStorage(trackerServer); StorageClient storageClient = new StorageClient(trackerServer, storageServer); ArrayList list=pathList; for (int i = 0; i < list.size(); i++) { Map map = (Map) list.get(i); //获取 图片路径 String pathMap = (String) map.get("path"); //获取 图片名字 String fileName = (String) map.get("name"); //图片地址 例如:M00/00/01/wKgCYGDULuGATH2sAAD7vWJ6uiM234.jpg String path1 = pathMap.substring(7); //图片名字 String reName = fileName; //返回一个流 byte[] bytes = storageClient.download_file("group1", path1); String runPath = getRunPath(); //文件名字 String dirPath = runPath + "images"; File dirFile = new File(dirPath); //如果文件夹不存在 if (!dirFile.exists()) { //创建文件夹 dirFile.mkdir(); } //格式设置为UTF-8 避免出现乱码 String name = new String(reName.getBytes("UTF-8"), "UTF-8"); //生成文件路径 String path = dirPath + File.separator; saveFile(bytes, path, name + ".jpg"); } } catch (IOException e) { e.printStackTrace(); } catch (MyException e) { e.printStackTrace(); } return null; }
//将字节流写到磁盘生成文件 private void saveFile(byte[] b, String path, String fileName) { File file = new File(path + fileName); FileOutputStream fileOutputStream = null; try { fileOutputStream = new FileOutputStream(file); fileOutputStream.write(b); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (fileOutputStream != null) { try { fileOutputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
/** * 生成zip文件, * 生成zip文件之前,先把之前的zip文件删掉。 */ public long genZip() throws FileNotFoundException { String runPath = getRunPath(); String dirPath = runPath + "images"; String dirPathZip = runPath + "images.zip"; if (FileUtil.exist(dirPathZip)) {//如果存在,就删除 FileUtil.del(dirPathZip); } // 去压缩 Charset charset = Charset.forName("UTF-8"); File file = ZipUtil.zip(dirPath, charset); long length = file.length(); if (file.exists()) { // 删除压缩前的 FileUtil.del(dirPath); } return length; }
// 返回下载链接 public String downLoadUrl() throws FileNotFoundException { System.out.println("调用下载链接"); String runPath = getRunPath(); String dirPath = runPath + "images.zip"; System.out.println("要下载的文件链接为:"); System.out.println(dirPath); return dirPath; }
//执行完下载后,删除文件 public void deleteDic() throws FileNotFoundException { System.out.println("下载完成,开始删除"); String runPath = getRunPath(); String dirPath = runPath + "images.zip"; FileUtil.del(dirPath); }
public static String getRunPath() throws FileNotFoundException { String runPath = "/root/"; if (FileUtil.isWindows()) { runPath = ResourceUtils.getURL(ResourceUtils.CLASSPATH_URL_PREFIX).getPath(); } return runPath; }