`
daoshud1
  • 浏览: 556919 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java下载远程服务器文件

    博客分类:
  • java
阅读更多
public GetRemoteFile_Client_GoOn(){
	  }
	private boolean FileExist(String pathAndFile){//确定文件是否已经下载,但没有下载完成
	    File file = new File(pathAndFile);
	    if (file.exists())
	      return true;
	    else
	      return false;
	  }
	private long FileSize(String pathAndFile){//确定已经下载了的文件大小
	    File file = new File(pathAndFile);
	    return file.length();
	  }
	private void FileRename(String fName,String nName){//将下载完全的文件更名,去掉.tp名
	    File file = new File(fName);
	    file.renameTo(new File(nName));
	    file.delete();
	  }
	public static void main(String[] args){
	    URL url = null;
	    HttpURLConnection urlc = null;
	    DataOutputStream dos = null;
	    BufferedInputStream bis = null;
	    FileOutputStream fos = null;
	    String localFile = "d:\\XunXian_V2.0.21.1_dl.exe";//文件保存的地方及文件名,具体情况可以改
	    String localFile_bak = localFile + ".tp";//未下载完文件加.tp扩展名,以便于区别
	    GetRemoteFile_Client_GoOn gco = new GetRemoteFile_Client_GoOn();
	    long fileSize = 0;
	    long start = System.currentTimeMillis();
	    int len = 0;
	    byte[] bt = new byte[1024];
	    RandomAccessFile raFile=null;
	    long TotalSize=0;//要下载的文件总大小
	    try{
	      url = new URL("http://down.qq.com/xunxian/full/XunXian_V2.0.21.1_dl.exe");      
	      urlc = (HttpURLConnection) url.openConnection();
	      TotalSize=Long.parseLong(urlc.getHeaderField("Content-Length"));
	      System.out.println("下载文件大小为:"+TotalSize);
//	      urlc.disconnect();//先断开,下面再连接,否则下面会报已经连接的错误
	      urlc = (HttpURLConnection) url.openConnection();
	      //确定文件是否存在
	      if (gco.FileExist(localFile_bak)){//采用断点续传,这里的依据是看下载文件是否在本地有.tp有扩展名同名文件
	        System.out.println("文件续传中...");
	        fileSize = gco.FileSize(localFile_bak); //取得文件在小,以便确定随机写入的位置
	        System.out.println("fileSize:"+fileSize);
	        //设置User-Agent
	        //urlc.setRequestProperty("User-Agent","NetFox");
	        //设置断点续传的开始位置
	        urlc.setRequestProperty("RANGE", "bytes="+fileSize+"-");
	        //urlc.setRequestProperty("RANGE", "bytes="+fileSize);//这样写不行,不能少了这个"-".
	        //设置接受信息
	        urlc.setRequestProperty("Accept","image/gif,image/x-xbitmap,application/msword,*/*");        
	        raFile=new RandomAccessFile(localFile_bak,"rw");//随机方位读取
	        raFile.seek(fileSize);//定位指针到fileSize位置
	        bis = new BufferedInputStream(urlc.getInputStream());
	        while ((len = bis.read(bt)) > 0){//循环获取文件
	          raFile.write(bt, 0, len);
	        }
	        System.out.println("文件续传接收完毕!");        
	      }
	      else{//采用原始下载
	        fos = new FileOutputStream(localFile_bak); //没有下载完毕就将文件的扩展名命名.bak
	        dos = new DataOutputStream(fos);
	        bis = new BufferedInputStream(urlc.getInputStream());        
	        System.out.println("正在接收文件...");
	        int test=0;
	        while ((len = bis.read(bt)) > 0){//循环获取文件
	          dos.write(bt, 0, len);
	          test++;
	        }        
	      }      
	      System.out.println("共用时:" + 
	                         (System.currentTimeMillis() - start) / 1000);
	      if(bis!=null)
	        bis.close();
	      if(dos!=null)
	        dos.close();
	      if(fos!=null)
	        fos.close();
	      if(raFile!=null)
	        raFile.close();
	      System.out.println("localFile_bak:"+gco.FileSize(localFile_bak));
	      if(gco.FileSize(localFile_bak)==TotalSize){//下载完毕后,将文件重命名
	        gco.FileRename(localFile_bak,localFile);
	      }
	      System.exit(0);
	    }
	    catch (Exception e){
	      try{
	        if(bis!=null)
	          bis.close();
	        if(dos!=null)
	          dos.close();
	        if(fos!=null)
	          fos.close();
	        if(raFile!=null)
	          raFile.close();
	      }
	      catch (IOException f){
	        f.printStackTrace();
	      }
	      e.printStackTrace();
	    }
	    System.exit(0);
	  }

原文地址:http://blog.csdn.net/fenglibing/archive/2007/01/09/1478040.aspx
分享到:
评论

相关推荐

    JAVA下载远程Linux服务器的文件

    在Java编程中,有时我们需要与远程Linux服务器进行交互,例如下载或上传文件。在这个场景下,我们可以使用SMB(Server Message Block)协议,这是一种网络文件共享协议,常见于Windows系统,但同样可以应用于Linux...

    JAVA代码实现远程操作服务器文件

    该功能可以实现远程服务器文件的上传、下载、复制、移动、删除等操作。 description: 该实现使用了SVNKit库和Trilead SSH2库来实现远程服务器文件的操作。SVNKit库提供了对svn repository的访问和操作,而Trilead ...

    java远程读写服务器文件

    主要实现的是登录服务器操作服务器的中的文件数据,支持读写的操作。主要使用的方法getProperties是设置配置的login(参数一是访问服务器的配置,参数二是设置读还是写)方法是读写连接服务器

    JAVA实现远程文件读取

    JAVA实现远程文件读取 JAVA是一种广泛应用于软件开发的编程语言,随着网络技术的发展,JAVA也提供了许多支持远程文件读取的功能,本文将详细介绍JAVA实现远程文件读取的知识点。 1. Socket 编程 在JAVA中,Socket...

    Java读取远程主机文件

    在这个场景中,开发人员可能需要从远程服务器上下载文件或者实时读取文件内容,这对于分布式系统、云存储以及自动化运维等场景尤其重要。下面将详细解释相关的技术和方法。 首先,Java中实现SSH连接通常会借助第三...

    java 实现上传文件到远程服务器

    ### Java 实现上传文件到远程服务器(Spring MVC) 在现代软件开发中,文件上传功能是十分常见的需求之一,尤其在Web应用中。本篇文章将详细介绍如何利用Java编程语言结合Spring MVC框架来实现文件的远程上传功能。...

    java,jsp读取远程图片到本地服务器

    在本地保存图片时,我们需要创建一个`FileOutputStream`,并将从远程服务器读取的字节流写入。 5. **HTML解析**: 为了替换原网页中的图片地址,我们需要解析HTML内容。可以使用Jsoup库来解析和操作DOM结构,找到...

    java远程传输文件

    Java远程传输文件 Java是一种跨平台的语言,在实际开发中,经常需要传输文件,该代码是一个很好的传输文件的例子。...该代码实现了Java远程传输文件的功能,使用了多种技术和方法来实现文件的下载和上传。

    JAVA代码实现远程服务器的文件操作步骤及JAR包

    在Java编程中,远程服务器的文件操作是一项常见任务,尤其在分布式系统和云计算环境中。本文将详细介绍如何使用Java实现这一功能,并提供相关的JAR包。主要涉及的技术包括Linux的SCP(Secure Copy)协议、Java的...

    java上传文件到linux服务器,操作linux服务器上文件,下载linux服务器文件,删除linux服务器文件

    **下载Linux服务器文件** 下载文件的过程与上传类似,只是使用了`get()`方法。该方法会将服务器上的文件下载到本地。 ```java sftp.get(远程文件路径, 本地保存路径); ``` **删除Linux服务器文件** 删除文件可以...

    用JAVA实现远程图片批量下载

    ### 使用JAVA实现远程图片批量下载的关键技术点 #### 一、引言 随着互联网的快速发展,用户对于网络资源的需求越来越多样化。其中,批量下载图片的需求尤为显著,尤其是在处理网络相册、电子书籍等内容时。传统的...

    java 读取远程文件目录 及文件方式

    本文件是将 Java 中 通过远程url访问 转换成 HTML 文件 ,通过 dom4j转换成Java对象元素

    java实现简单远程监控

    在Java中实现远程监控可以利用Java的多种内置特性,如JMX(Java Management Extensions)、RMI(Remote Method Invocation)以及网络编程API。下面我们将详细探讨如何使用Java来构建一个简单的远程监控系统。 首先...

    Java web使用pdf.js在线预览远程服务器上的pdf文件

    "Java Web使用pdf.js在线预览远程服务器上的pdf文件"这个主题涵盖了如何利用pdf.js库实现在Web环境中流畅、安全地预览PDF文档。pdf.js是Mozilla开发的一个开源项目,它允许开发者在浏览器端直接渲染PDF内容,无需...

    Java远程批量文件生成

    "Java远程批量文件生成"这个项目就是利用Java的IO(输入/输出)功能来实现在远程服务器上创建多个文件的功能。下面我们将详细探讨相关的Java知识点和技术。 1. **Java RMI (Remote Method Invocation)**: 这是Java...

    Java解析FTP服务器文本文件

    Java解析FTP服务器文本文件是指使用Java语言连接FTP服务器,上传、下载、递归目录遍历等基本操作的集合。在这个过程中,我们需要引入相关的jar包,例如cpdetector.jar、jchardet-1.0.jar、antlr.jar、commons-...

    java远程调用批处理文件代码归总

    Java远程调用批处理文件是将Java编程与批处理脚本结合的一种技术,它允许Java程序执行在远程服务器上的批处理任务,而无需人工干预。这通常涉及到网络通信和进程间交互,使得分布式系统能够更加灵活地管理和调度任务...

    java使用JSCH进行连接远程服务器Demo

    Java使用JSCH(Java Secure Channel)库连接远程服务器是一个常见的任务,特别是在自动化运维、文件传输或者执行远程命令等场景中。JSCH是一个纯Java实现的SSH2库,它提供了连接到支持SSH协议的服务器的能力,如...

    Java实现Linux的远程拷贝

    在IT行业中,Java是一种广泛应用的编程语言,它不仅在企业级应用中表现出色,也能够实现各种系统级别的功能,如远程文件操作。本篇将详细探讨如何使用Java来实现Linux系统的远程拷贝功能。 首先,要实现Linux的远程...

    SSH2 java连接远程服务器框架

    SSH(Secure Shell)是一种网络协议,用于在不安全的...通过以上步骤,你可以使用Java的SSH2框架(如JSch)连接到远程服务器,执行命令和传输文件。这在自动化运维、远程脚本执行、文件同步等多个场景中都非常实用。

Global site tag (gtag.js) - Google Analytics