http://www.cnblogs.com/thinkingandworkinghard/articles/5589484.html
平常做的工作中,有一部分是同步數據的。但是同步的過程中碰到個問題,是這樣子的:我們的數據是從公司另一個部門的服務器上同步過來的,里面有圖片,但是只有圖片的路徑。這樣我們每次讀取圖片的時候,讀取的是他們的服務器的圖片,一旦他們的服務器出現問題,我們這邊就會讀取不到。同事提出了這個問題,並讓我根據他們的圖片地址在同步數據的時候,把圖片也下載到我們的服務器上,這樣讀取的時候讀取成我們自己的服務器上,於是上網先搜了下怎么根據圖片路徑保存到本地:參考http://takeme.iteye.com/blog/1683380
import java.io.File;
2.import java.io.FileOutputStream;
3.import java.io.InputStream;
4.import java.io.OutputStream;
5.import java.net.URL;
6.import java.net.URLConnection;
7.
8.
9.public class DownloadImage {
10.
11. /**
12. * @param args
13. * @throws Exception
14. */
15. public static void main(String[] args) throws Exception {
16. // TODO Auto-generated method stub
17. download("http://ui.51bi.com/opt/siteimg/images/fanbei0923/Mid_07.jpg", "51bi.gif","c:\\image\\");
18. }
19.
20. public static void download(String urlString, String filename,String savePath) throws Exception {
21. // 構造URL
22. URL url = new URL(urlString);
23. // 打開連接
24. URLConnection con = url.openConnection();
25. //設置請求超時為5s
26. con.setConnectTimeout(5*1000);
27. // 輸入流
28. InputStream is = con.getInputStream();
29.
30. // 1K的數據緩沖
31. byte[] bs = new byte[1024];
32. // 讀取到的數據長度
33. int len;
34. // 輸出的文件流
35. File sf=new File(savePath);
36. if(!sf.exists()){
37. sf.mkdirs();
38. }
39. OutputStream os = new FileOutputStream(sf.getPath()+"\\"+filename);
40. // 開始讀取
41. while ((len = is.read(bs)) != -1) {
42. os.write(bs, 0, len);
43. }
44. // 完畢,關閉所有鏈接
45. os.close();
46. is.close();
47. }
48.
49.}
這樣子確實可以下載到本地,為了防止跨平台,需要把里面的"\\"或者"/"換成 File.separtor,原來我是想把同步工程的圖片路徑放在tomcat的跟目錄下System.getProperty("user.dir"),但是同事提醒了下,說同步的項目不再tomcat里面,這樣圖片上傳的路徑沒辦法放到tomcat的共享目錄了。最后再一想,既然這樣,還不如讓運營人員手工上傳或者在另外一個項目里面給添加一個 功能,這樣也不用我再同步的項目里面來寫了。注意這樣定了,明天去公司實現吧。

