本文利用Java.net编写的网络客户端实现从服务器端下载文件的功能,本功能实现分三步:
1、创建本地待接收的远程文件。
2、创建本地至服务器端的远程连接。
3、将服务器端文件写入输入流,从输入流中将内容写入本地文件,完成文件下载。
代码如下:
public static int downloadFile(String remoteURL,String fileDirectory,String fileName) {
Path p=Paths.get(fileDirectory);
File f_p=p.toFile();
try{
if(!f_p.exists()) {
f_p.mkdir();
}
File f=new File(p.toAbsolutePath().toString()+"\\"+fileName);
if(!f.exists()) {
f.createNewFile();
}
FileOutputStream fos=new FileOutputStream(f);
byte[] pb=new byte[1024];
URL url=new URL(remoteURL);
URLConnection urlc=url.openConnection();
InputStream inputstream=urlc.getInputStream();
int length=-1;
while(true) {
length=inputstream.read(pb);
if(length<0) {
fos.flush();
break;
}
else {
fos.write(pb,0,length);
}
}
inputstream.close();
fos.close();
return 0;
}
catch(Exception e) {
e.printStackTrace();
return -1;
}
一、创建本地文件:
利用Path类获取目录路径对象,检测该路径是否存在,如不存在则利用File类中的mkdir方法
创建该路径
Path p=Paths.get(fileDirectory);
File f_p=p.toFile();
if(!f_p.exists()) {
f_p.mkdir();
}
File f=new File(p.toAbsolutePath().toString()+"\\"+fileName);
System.out.println(f.getAbsolutePath());
if(!f.exists()) {
f.createNewFile();
}
FileOutputStream fos=new FileOutputStream(f);
二、建立远程URL连接准备下载服务器文件:利用URL类的openConnection方法获取一个URLConnection对象,该对象的getInputStream方法可以获得待下载文件的输入流对象。
byte[] pb=new byte[1024];
URL url=new URL(remoteURL);
URLConnection urlc=url.openConnection();
InputStream inputstream=urlc.getInputStream();
三、将第二步获取的输入流内容写入一个byte数组,并将该byte数组内容写入本地文件构建的输出流,完成文件下载。
int length=-1;
while(true) {
length=inputstream.read(pb);
if(length<0) {
fos.flush();
break;
}
else {
fos.write(pb,0,length);
}
}
inputstream.close();
fos.close();