我有一个需求是在远程绝对路径读取一张图片,怎么读入会速度快并且能传输,还能保存到本地。

解决方案 »

  1.   

    构造一个URL对象,然后再根据URL构造好IO对象,就可以操作了
      

  2.   

    要用Socket通信还是URL
    用URL简单
    直接建一个URL对象,然后取得他的数据流
    读到本地就可以了
    注意下载图片要用字节流,想传的快一点就用带缓冲的字节流
    注意写java网络 一定要关流  包括文件流 I/O流等Good Luck :-)
      

  3.   

    java技术交流,讨论java的技术细节和最新技术。欢迎中高级程序员加入讨论。QQ群:3001581
      

  4.   

    SOCKET通信速度比较快. HTTP使用相对方便,开发比较容易.
      

  5.   

    SOCKET
    udp最快了!呵呵
    可是不保证质量
      

  6.   

    <%@page contentType="text/html;charset=gb2312"%>
    <%@page import="java.io.*"%>
    <jsp:useBean id="str" scope="page" class="getStr.getStr"/>
    <%
    String Filename = request.getParameter("FileName");//接收传过来的文件名
    if(Filename==null){Filename = "";}
    else{Filename=str.getStr(Filename);}
    String Path = request.getParameter("Path");//接收传过来的文件对应的文件夹File file = new File(request.getRealPath("/")+"MsgPerson/"+Path+"/"+Filename);
    out.print(file);
     if(!file.exists())
    out.println("文件不存在,请联系系统管理员!");
     else{
        //得到文件名字和路径
        String filename = "";
    String S_FilePath=request.getRealPath("/")+"MsgPerson\\"+Path+"\\"+Filename; int pos = 0;
        pos = S_FilePath.lastIndexOf("\\");//找到最后一个"\\"记录其后的字符数 if(pos != -1)
          filename = S_FilePath.substring(pos+1, S_FilePath.length()); //取出附件名
        String strChina = new String(filename.getBytes("gb2312"),"iso8859-1");

        // 设置响应头和下载保存的文件名
        response.setContentType("APPLICATION/OCTET-STREAM"); 
        response.setHeader("Content-Disposition", "attachment; filename=\"" + strChina+ "\""); 
        
        // 打开指定文件的流信息
        java.io.FileInputStream fileInputStream = new java.io.FileInputStream(file); 
       
        // 写出流信息
        int totalRead = 0;
        int readBytes = 0;
        long fileLen = file.length();
        byte b[] = new byte[65000];//设置缓存大小
        response.resetBuffer();
       while((long)totalRead < fileLen)
      {
       readBytes = fileInputStream.read(b);
       totalRead += readBytes;
       response.getOutputStream().write(b, 0, readBytes);
      }
      fileInputStream.close();
     }
    %>
      

  7.   

    SOCKET+线程,分割文件块,通过配置线程数来控制下载速度,
    网速快线程数可以相应增加.类似网际快车的东东
      

  8.   

    一个图片,一般来说不会太大
    可以用URL加接就可以了
    用javax.imageio.ImageIO.read(URL input)就可以了
    它返回一个BufferedImage对象
    然后你可以调用ImageIO.write()方法把它保存在本地磁盘上就可以了
      

  9.   

    Socket二进制流传给他,他以二进制流获得。
    他可以将二进制流生成图片格式的文件保存到磁盘,
    也可以在内存上构造一个图片对象,以供使用。
      

  10.   

    URL就好了!一个图片也大不到哪去!不用那么复杂
      

  11.   

    是的通过URL就可以取出来了 简单
      

  12.   

    恩,用URL,有人能给我个参考的代码吗? 到底用哪个包装流最好用。如果传输过去了,怎么解析。