Java下载服务器文件

本文利用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();