码迷,mamicode.com
首页 > 编程语言 > 详细

新浪博客照片导出xml,使用java导出

时间:2019-07-16 11:08:40      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:length   自己   document   lang   directory   exist   system   try   需要   

最近家人碰到这种需求,说导出来是xml文件,还需要一步步的点开自己保存,既然有地址,那写个简单的程序还是更方便一些,这里面没有使用多线程,2000多张照片也挺快的;

直接看代码:

 1 import java.io.ByteArrayOutputStream;
 2 import java.io.DataInputStream;
 3 import java.io.File;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6 import java.net.MalformedURLException;
 7 import java.net.URL;
 8 import java.util.ArrayList;
 9 import java.util.HashMap;
10 import java.util.List;
11 import java.util.Map;
12 import java.util.Map.Entry;
13 
14 import org.dom4j.Document;
15 import org.dom4j.Element;
16 
17 public class ExportXLPhoto {
18     private static String xmlPath = "H:/xinlangphotos.xml";  //你的xml文件地址
19     public static void main(String[] args) {
20         int i =1;
21         Map<String, List<String>> urlMap = getSqls();
22         String path="H:/XLphotos/";  //你需要保存本地的目录
23         for(Entry<String, List<String>> entry : urlMap.entrySet()) {
24             String fileName = entry.getKey();
25             List<String> urList = entry.getValue();
26             for (String url : urList) {
27                 downloadPicture(url,path+fileName,path+fileName+"/"+i+".jpg");
28                 i++;
29             }
30             
31         }
32         
33     }
34     public static Map<String,List<String>> getSqls(){
35         
36         Map<String, List<String>> urlMap = new HashMap<>();
37         
38         Document  document = XmlUtil.readXML(xmlPath);  
39         Element root = document.getRootElement();
40         List<Element> els = root.elements();
41         for (Element el : els) {
42             List<String> urls = new ArrayList<String>();
43             System.out.println("目录:"+el.getName());
44             
45             List<Element> elementList=el.elements();  
46             for (Element element : elementList) {
47                 urls.add(element.getText());    
48                 System.out.println("节点:"+element.getName());
49             }
50             urlMap.put(el.getName(), urls);
51         }
52         return urlMap;
53         
54     }
55     
56     private static void downloadPicture(String urlList,String fileLocation,String path) {
57         URL url = null;
58         try {
59             url = new URL(urlList);
60             
61             File file =new File(fileLocation);    
62             if  (!file .exists()  && !file .isDirectory())      
63             {       
64               //  System.out.println("//不存在");  
65                 file .mkdir();    
66             } 
67 
68             
69             DataInputStream dataInputStream = new DataInputStream(url.openStream());
70  
71             FileOutputStream fileOutputStream = new FileOutputStream(new File(path));
72             ByteArrayOutputStream output = new ByteArrayOutputStream();
73  
74             byte[] buffer = new byte[1024];
75             int length;
76  
77             while ((length = dataInputStream.read(buffer)) > 0) {
78                 output.write(buffer, 0, length);
79             }
80             fileOutputStream.write(output.toByteArray());
81             dataInputStream.close();
82             fileOutputStream.close();
83         } catch (MalformedURLException e) {
84             e.printStackTrace();
85         } catch (IOException e) {
86             e.printStackTrace();
87         }
88     }
89 }

需要读取xml文件,所以有xmlUtil:

 1 import java.io.FileInputStream;
 2 import java.io.FileNotFoundException;
 3 import java.io.InputStream;
 4 
 5 import org.dom4j.Document;
 6 import org.dom4j.DocumentException;
 7 import org.dom4j.io.SAXReader;
 8 
 9 
10 public class XmlUtil {
11     public static Document readXML(String path) {
12         SAXReader reader = new SAXReader();
13         Document document = null;
14         try {
15             InputStream inputStream = new FileInputStream(path);//加载文件
16             document = reader.read(inputStream);
17         } catch (DocumentException e) {
18             e.printStackTrace();
19         } catch (FileNotFoundException e) {
21             e.printStackTrace();
22         }
23         return document;
24     }
25     
26 }

然后 就执行main函数就ok了。

 

因为着急导出,就简单的写了写,也没有做出什么优化,还请多指教吧!

新浪博客照片导出xml,使用java导出

标签:length   自己   document   lang   directory   exist   system   try   需要   

原文地址:https://www.cnblogs.com/lansaviour/p/11193111.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!