JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java SE 討論區 » IO/Streams  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 從網路上下載圖片回電腦...
paochih





發文: 42
積分: 0
於 2007-03-31 14:41 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
當我得到 http://www.abc.com.tw/abc.jpg 約幾十個string 時....
要怎麼下載回來自己的電腦....
可以提供 code 嗎 或 解釋一下方向 ???
用 thread 一次多張下載會比較快嗎?
還是跑迴圈一張張來?
謝謝指教.....


reply to postreply to post
作者 Re:從網路上下載圖片回電腦... [Re:paochih]
paochih





發文: 42
積分: 0
於 2007-03-31 18:08 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
1
2
3
4
5
6
7
8
URL url = new URL("http://www.abc.com.tw/abc.jpg");
FileOutputStream fos = new FileOutputStream("abc.jpg", false);
InputStream is = url.openStream();
int r = 0;
while ((r = is.read()) != -1)
fos.write(r);
is.close();
fos.close();


成功了....
多張加個迴圈設變數就好了....

但 thread 方面??
有人有對thread 的建議 可以告訴我嗎?


paochih edited on 2007-04-01 15:44
reply to postreply to post
作者 Re:從網路上下載圖片回電腦... [Re:paochih]
paochih





發文: 42
積分: 0
於 2007-04-02 22:34 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
請問一下...
thread 若用來下載圖片....
我假設有二十張圖的連結存在陣列裡....
那我跑迴圈...
這樣會做到 multi-thread 嗎?...
示意如下....
1
2
3
4
for(int i = 1; i <= 20;  i++){
Thread DwPic = new DownloadPic(pic[i]);
DwPic.start();
}

我的問題是...
若跑到 i = 3 時...
但 i = 2 的thread 還在做...
這 i = 3 會做嗎?
還是會等 2 做完再做 3......?

若改變成
1
2
3
4
5
6
for(int i = 1; i <= 10; i++){
Thread DwPicA = new DownloadPicA(pic[i]);
Thread DwPicB = new DownloadPicB(pic[i+10]);
DwPicA.start();
DwPicB.start();
}

這樣就表示二個thread同時run嗎??

有沒有讓下載二十張圖片的時間變的比較快的做法......
謝謝回答...


paochih edited on 2007-04-02 22:42
reply to postreply to post
作者 Re:從網路上下載圖片回電腦... [Re:paochih]
阿刃

生活就像 RPG



發文: 121
積分: 3
於 2007-04-03 07:52 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我的問題是...
若跑到 i = 3 時...
但 i = 2 的thread 還在做...
這 i = 3 會做嗎?
還是會等 2 做完再做 3......?

==>
了解執行緒的概念後你就會知道答案是什麼了..
在多執行緒的環境上並不能很明確的知道先後順序...

你可以把執行順序..當成同時...
由於開了另一個執行緒去執行i=3
所以不管i=2是否還在做..概念上你可以把i=3視為已經開始執行
至於誰先結束...沒有一定的結果

要下載比較快...在你的問題裡會不會是IO Bound??
要不要試試看一次讀取一個buffer的資料??
http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileInputStream.html#read(byte[],%20int,%20int)


reply to postreply to post
A never ending story with Java...

My blog => 【刃™】ThiS WORLD, MY WORLD
作者 Re:從網路上下載圖片回電腦... [Re:paochih]
paochih





發文: 42
積分: 0
於 2007-04-05 23:16 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
多執行緒的部份...
謝謝大大的講解.....

但讀取buffer 資料是指什麼意思 呢???


reply to postreply to post
作者 Re:從網路上下載圖片回電腦... [Re:paochih]
阿刃

生活就像 RPG



發文: 121
積分: 3
於 2007-04-10 06:43 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
paochih wrote:
多執行緒的部份...
謝謝大大的講解.....

但讀取buffer 資料是指什麼意思 呢???


可能是小弟沒有說清楚~
我的意思是~一次讀取一個陣列的資料...
而小弟習慣把那個byte陣列命名為buffer...
理論上..
一次讀取一個陣列的資料應該可以有效減少讀取次數...
詳細資料請你查閱API...


reply to postreply to post
A never ending story with Java...

My blog => 【刃™】ThiS WORLD, MY WORLD
» JWorld@TW »  Java SE 討論區 » IO/Streams

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8