java應(yīng)用程序與網(wǎng)絡(luò)通訊一直是我的弱項(xiàng),想補(bǔ)一補(bǔ),就從這一篇開(kāi)始吧!
以從網(wǎng)上下載一個(gè)圖象為例:
import
?java.io.BufferedInputStream;
import
?java.io.BufferedOutputStream;
import
?java.io.File;
import
?java.io.FileOutputStream;
import
?java.io.IOException;
import
?java.net.URL;
import
?java.net.URLConnection;
public
?
class
?DownloadFormURL?{
????
public
?
static
?
void
?main(String[]?args)?{
????????
try
?{
????????????
new
?DownloadFormURL().downloadFile(
"
http://127.0.0.1:8080/image/f.jpg
"
,?
new
?File(
"
F:/image.jpg
"
));
????????}?
catch
?(IOException?e)?{
????????????e.printStackTrace();
????????}
????}
????
public
?
void
?downloadFile(String?sourceURL,?File?targetFile)?
throws
?IOException?{
????????URL?url?
=
?
new
?URL(sourceURL);
????????URLConnection?connection?
=
?url.openConnection();
????????java.io.InputStream?inputStream?
=
?connection.getInputStream();
????????FileOutputStream?outputStream?
=
?
new
?FileOutputStream(targetFile);
????????BufferedInputStream?in?
=
?
null
;
????????BufferedOutputStream?out?
=
?
null
;
????????
byte
?buffer[]?
=
?
new
?
byte
[
8192
];
????????
try
?{
????????????in?
=
?
new
?BufferedInputStream(inputStream,?buffer.length);
????????????out?
=
?
new
?BufferedOutputStream(outputStream,?buffer.length);
????????????
int
?total?
=
?
0
;
????????????
for
?(
int
?bytesRead?
=
?
0
;?(bytesRead?
=
?in.read(buffer))?
!=
?
-
1
;)?{
????????????????out.write(buffer,?
0
,?bytesRead);
????????????????total?
+=
?bytesRead;
????????????}
????????}?
finally
?{
????????????in.close();
????????????out.close();
????????}
????????
return
;
????}
}
小試了一下,還不錯(cuò)!