额。。 个人觉得 这段:
        byte[] buffer = new byte[102400];       
        while(in.read(buffer)!=-1){       
           out.write(buffer);       
           buffer = new byte[1024];       
        }    
第一次 new 数组的长度 是不是 多了两个0,还有 while 循环里的 buffer = new byte[1024];       是不是可以删掉

解决方案 »

  1.   

    啊,那个已经改过了,下面是改过之后的
    public static void smbGet(String remoteUrl, String localDir) {
    BufferedInputStream in = null;
    BufferedOutputStream out = null;
    try {
    SmbFile remoteFile = new SmbFile(remoteUrl);
    int length = remoteFile.getContentLength();// 得到文件的大小
    //System.out.println("something......");
    if (remoteFile == null) {
    //if(remoteFile ==null){
    System.out.println("共享文件不存在或没有权限访问");
    return;
    }
                
    String fileName = remoteFile.getName();
    File localFile = new File(localDir + File.separator + fileName);
    byte[] buffer = new byte[length];
    in = new BufferedInputStream(new SmbFileInputStream(remoteFile));
    out = new BufferedOutputStream(new FileOutputStream(localFile));

    in.read(buffer);
    out.write(buffer);
    out.flush();
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    try {
    out.close();
    in.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }具体是 in = new BufferedInputStream(new SmbFileInputStream(remoteFile));
    in.read(buffer);
    out.write(buffer);
    这三步慢啊~