⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webdavconnection.java

📁 一个JAVA做的FTP软件,带源码的,可以很好的进行二次开发,,并带有详细说明文件的
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                catch(Exception ex)                {                        Log.debug("ERROR: parsing problem with:" + files[i]);                        size[i] = "-1";                        perms[i] = FtpConnection.DENIED;                        continue;                }                */                Log.out("sortLs files[" + i + "]: " + files[i]);                //size[i] = "" + (int) f[i].length();                size[i] = "" + (int) f[i].getGetContentLength();                perms[i] = FtpConnection.R;                if(f[i].isCollection() && !files[i].endsWith("/"))                {                    files[i] = files[i] + "/";                }                /*                if(f[i].canWrite()) accessible = FtpConnection.W;                else if(f[i].canRead()) accessible = FtpConnection.R;                else accessible = FtpConnection.DENIED;                perms[i] = accessible;                Log.out("sortLs files["+i+"]: " + files[i]);                WebdavFile f2 = new WebdavFile(new URL(files[i]), user, pass);                if(!f2.exists()) continue;                if(f2.isDirectory() && !files[i].endsWith("/")) files[i] = files[i] + "/";                size[i] = "" + new WebdavFile(new URL(files[i]), user, pass).length();                */            }            return files;        }        catch(Exception ex)        {            Log.debug("Error: " + ex.toString());            ex.printStackTrace();            return new String[0];        }    }    public String[] sortSize(String file)    {        return size;    }    public int[] getPermissions(String file)    {        return perms;    }    public int handleDownload(String file)    {        transfer(file);        return 0;    }    public int handleUpload(String file)    {        transfer(file, true);        return 0;    }    public int download(String file)    {        transfer(file);        return 0;    }    public int upload(String file)    {        transfer(file, true);        return 0;    }    private void transferDir(String dir, String out)    {        try        {            fileCount = 0;            shortProgress = true;            baseFile = StringUtils.getDir(dir);            WebdavFile f2 = new WebdavFile(getURL(dir));            String[] tmp = f2.list();            if(tmp == null)            {                return;            }            WebdavFile fx = new WebdavFile(getURL(out));            if(!fx.mkdir())            {                Log.debug("Can not create directory: " + out +                          " - already exist or permission denied?");            }            for(int i = 0; i < tmp.length; i++)            {                tmp[i] = tmp[i].replace('\\', '/');                //System.out.println("1: " + dir+tmp[i] + ", " + out +tmp[i]);                WebdavFile f3 = new WebdavFile(getURL(dir + tmp[i]));                if(f3.isDirectory())                {                    if(!tmp[i].endsWith("/"))                    {                        tmp[i] = tmp[i] + "/";                    }                    transferDir(dir + tmp[i], out + tmp[i]);                }                else                {                    fireProgressUpdate(baseFile,                                       DataConnection.GETDIR + ":" + fileCount,                                       -1);                    work(dir + tmp[i], out + tmp[i]);                }            }            fireProgressUpdate(baseFile,                               DataConnection.DFINISHED + ":" + fileCount, -1);            shortProgress = false;        }        catch(Exception ex)        {            Log.debug("Error: " + ex.toString());            ex.printStackTrace();        }    }    private HttpURL getURL(String u)    {        try        {            HttpURL url = new HttpURL(u);            //System.out.println(user + ":"+ pass);            url.setUserinfo(user, pass);            return url;        }        catch(Exception ex)        {            ex.printStackTrace();            Log.debug("ERROR: " + ex);            return null;        }    }    private WebdavResource getResource(String res)                                throws HttpException, IOException    {        return new WebdavResource(getURL(res));    }    private void transfer(String file)    {        transfer(file, false);    }    private void transfer(String file, boolean up)    {        String out = StringUtils.getDir(file);        if(StringUtils.isRelative(file))        {            file = getPWD() + file;        }        file = file.replace('\\', '/');        out = out.replace('\\', '/');        String outfile = StringUtils.getFile(file);        if(file.endsWith("/"))        {            if(up)            {                Log.debug("Directory upload not implemented yet.");                return;            }            transferDir(file, getLocalPath() + out);            return;        }        else        {            if(up)            {                work(getLocalPath() + outfile, file);            }            else            {                work(file, getLocalPath() + outfile);            }        }    }    private void work(String file, String outfile)    {        Log.out("transfer started\nfile: " + file + "\noutfile: " + outfile);        try        {            if(outfile.startsWith("http://"))            {                //out = new BufferedOutputStream(new FileOutputStream(new WebdavResource(new HttpURL(file)).getMethodData());                //new WebdavFile(new URL(outfile), user, pass)));                //in = new BufferedInputStream(new FileInputStream(file));                String resPath = outfile.substring(0,                                                   outfile.lastIndexOf("/") +                                                   1);                String name = outfile.substring(outfile.lastIndexOf("/") + 1);                Log.debug("Uploading " + file + " to " + resPath + " as " +                          name);                //HttpURL url = getURL(resPath);                WebdavResource res = getResource(resPath);                //new WebdavResource(url);                /*                if(res.checkinMethod()) Log.debug("Checkin OK");                else Log.debug("Checkin FAILED");                Enumeration e = res.getAllowedMethods();                while(e != null && e.hasMoreElements())                {                        Log.debug("Method: " + e.nextElement().toString());                }                */                if(res.putMethod(new File(file)))                {                    fireProgressUpdate(file, DataConnection.FINISHED, -1);                }                else                {                    Log.debug("Upload failed.");                    fireProgressUpdate(file, DataConnection.FAILED, -1);                }                return;            }            Log.debug("Downloading " + file + " to " + outfile);            BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outfile));            BufferedInputStream in = new BufferedInputStream(getResource(file)                                                                 .getMethodData());            //new WebdavResource(getURL(file)).getMethodData());            byte[] buf = new byte[webdavBuffer];            int len = 0;            int reallen = 0;            //System.out.println(file+":"+getLocalPath()+outfile);            while(true)            {                len = in.read(buf);                //System.out.print(".");                if(len == StreamTokenizer.TT_EOF)                {                    break;                }                out.write(buf, 0, len);                reallen += len;                fireProgressUpdate(StringUtils.getFile(file),                                   DataConnection.GET, reallen);            }            out.flush();            out.close();            in.close();            fireProgressUpdate(file, DataConnection.FINISHED, -1);        }        catch(IOException ex)        {            Log.debug("Error with file IO (" + ex + ")!");            ex.printStackTrace();            fireProgressUpdate(file, DataConnection.FAILED, -1);        }    }    public int upload(String file, InputStream in)    {        /*           if(StringUtils.isRelative(file)) file = getPWD() + file;           file = file.replace('\\','/');           try           {                   work(new BufferedInputStream(in), file, file);                   return 0;           }           catch(Exception ex)           {                   Log.debug("Error: " + ex.toString());                   ex.printStackTrace();                   return -1;           }           */        Log.debug("Upload using InputStream is not implemented yet!");        return -1;    }    /*    private void work(BufferedInputStream in, String outfile, String file)    {     Log.out("transfer started, input from stream\noutfile: " + outfile);     try     {             BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outfile));        byte buf[] = new byte[webdavBuffer];        int len = 0;        int reallen = 0;        while(true)        {                len = in.read(buf);                System.out.print(".");                if(len == StreamTokenizer.TT_EOF) break;                out.write(buf,0,len);                reallen += len;                fireProgressUpdate(StringUtils.getFile(file),DataConnection.GET, reallen);        }        out.flush();        out.close();        in.close();        fireProgressUpdate(file,DataConnection.FINISHED, -1);     }     catch(IOException ex)     {             Log.debug("Error with file IO ("+ex+")!");        ex.printStackTrace();        fireProgressUpdate(file,DataConnection.FAILED, -1);     }    }    */    public InputStream getDownloadInputStream(String file)    {        if(StringUtils.isRelative(file))        {            file = getPWD() + file;        }        file = file.replace('\\', '/');        try        {            return getResource(file).getMethodData();        }        catch(Exception ex)        {            ex.printStackTrace();            Log.debug(ex.toString() +                      " @WebdavConnection::getDownloadInputStream");            return null;        }    }    public void addConnectionListener(ConnectionListener l)    {        listeners.add(l);    }    public void setConnectionListeners(Vector l)    {        listeners = l;    }    /** remote directory has changed */    public void fireDirectoryUpdate()    {        if(listeners == null)        {            return;        }        else        {            for(int i = 0; i < listeners.size(); i++)            {                ((ConnectionListener) listeners.elementAt(i)).updateRemoteDirectory(this);            }        }    }    public boolean login(String user, String pass)    {        return true;    }    public void fireProgressUpdate(String file, String type, int bytes)    {        if(listeners == null)        {            return;        }        else        {            for(int i = 0; i < listeners.size(); i++)            {                ConnectionListener listener = (ConnectionListener) listeners.elementAt(i);                if(shortProgress && Settings.shortProgress)                {                    if(type.startsWith(DataConnection.DFINISHED))                    {                        listener.updateProgress(baseFile,                                                DataConnection.DFINISHED + ":" +                                                fileCount, bytes);                    }                    listener.updateProgress(baseFile,                                            DataConnection.GETDIR + ":" +                                            fileCount, bytes);                }                else                {                    listener.updateProgress(file, type, bytes);                }            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -