EdtFtp 源码

转载 2007年09月25日 12:55:00

 

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.StringTokenizer;

import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
import sun.net.ftp.FtpLoginException;

public class ftp  {

    FtpClient aftp;

    DataOutputStream outputs;

    TelnetInputStream ins;

    TelnetOutputStream outs;

    
int ch;

    
public String a;

    String hostname 
= "";

    
private String path = "/";

    
public static void main(String[] args) {
        String hostname 
= "133.133.133.34";
        
int port = 21;
        String uid 
= "olympic";
        String pwd 
= "olympic";
        String RWFileDir 
= "D:/temp/files";// 文件目录

        
// 连接ftp服务器
        ftp ft = new ftp();
        ft.connect(RWFileDir, hostname, port, uid, pwd);

        
// 下载文件
        if (ft.aftp != null{
            
try {
                ft.getNameList(RWFileDir);
            }
 catch (IOException e) {
                System.out.println(
"下载文件出错:" + e);
            }

        }


        
// 断开服务器连接
        ft.stop(RWFileDir);

    }


    
public FtpClient connect(String RWFileDir, String hostname, int port,
            String uid, String pwd) 
{
        
this.hostname = hostname;
        System.out.println(
"正在连接" + hostname + ",请等待.....");
        
try {
            aftp 
= new FtpClient(hostname, port);
            aftp.login(uid, pwd);
            aftp.binary();
            
// aftp.openPortDataConnection();
            a = "连接主机:" + hostname + "成功!";
            System.out.println(a);
        }
 catch (FtpLoginException e) {
            a 
= "登陆主机:" + hostname + "失败!请检查用户名或密码是否正确:" + e;
            System.out.println(a);
            
// return false;
        }
 catch (IOException e) {
            a 
= "连接主机:" + hostname + "失败!请检查端口是否正确:" + e;
            System.out.println(a);
            
// return false;
        }
 catch (SecurityException e) {
            a 
= "无权限与主机:" + hostname + "连接!请检查是否有访问权限:" + e;
            System.out.println(a);
            
// return false;
        }


        log(RWFileDir, a);
        
return aftp;
    }


    
public void stop(String RWFileDir) {
        String message 
= "";
        
try {
            
if (aftp != null{
                aftp.closeServer();
                message 
= "与主机" + hostname + "连接已断开!";
                System.out.println(message);
                log(RWFileDir, message);
            }

        }
 catch (IOException e) {
            message 
= "与主机" + hostname + "断开连接失败!" + e;
            System.out.println(message);
            log(RWFileDir, message);
        }

    }


    
public boolean downloadFile(String RWFileDir, String filepathname) {
        
boolean result = true;
        String message 
= "";
        
if (aftp != null{
            System.out.println(
"正在下载文件" + filepathname + ",请等待....");
            String badfile 
= filepathname.substring(filepathname.length() - 4,
                    filepathname.length());
            String badlog 
= filepathname.substring(filepathname.length() - 7,
                    filepathname.length());
            String baddir 
= "";
            
if ((badfile.compareTo(".bad"!= 0)
                    
&& (badlog.compareTo(".badlog"!= 0)) {
                baddir 
= "subunsubtosp/";
            }
 else {
                baddir 
= "bad/";
            }

            String strdir 
= "subunsubtosp/";
            
// System.out.println(RWFileDir + baddir + filepathname);
            try {
                
// FtpClient fc=new FtpClient("192.168.0.56",2121);
                
// fc.login("lee","lee");
                int ch;
                File fi 
= new File(RWFileDir + baddir + filepathname);
                
// aftp.cd(strdir);
                RandomAccessFile getFile = new RandomAccessFile(fi, "rw");
                getFile.seek(
0);
                TelnetInputStream fget 
= aftp.get(strdir + filepathname);
                DataInputStream puts 
= new DataInputStream(fget);
                
while ((ch = puts.read()) >= 0{
                    getFile.write(ch);

                }

                
// s.delete();

                fget.close();
                getFile.close();
                
// fc.closeServer();

                message 
= "下载" + filepathname + "文件到" + baddir + "目录成功!";
                System.out.println(message);
                log(RWFileDir, message);
            }
 catch (IOException e) {
                message 
= "下载" + filepathname + "文件到" + baddir + "目录失败!" + e;
                System.out.println(message);
                log(RWFileDir, message);
                result 
= false;

            }

        }
 else {
            result 
= false;
        }

        
return result;
    }


    
public boolean uploadFile(String RWFileDir, String filepathname) {
        
boolean result = true;
        String message 
= "";
        
if (aftp != null{
            System.out.println(
"正在上传文件" + filepathname + ",请等待....");

            
try {
                String fg 
= new String("/subunsubfromsp/");
                
int index = filepathname.lastIndexOf(fg);
                String filename 
= filepathname.substring(index + 1);
                File localFile 
= new File(filepathname);

                RandomAccessFile sendFile 
= new RandomAccessFile(filepathname,
                        
"r");
                
// 
                sendFile.seek(0);
                
// 改名上传temp_
                filename = filename.substring(015+ "temp_"
                        
+ filename.substring(15, filename.length());
                outs 
= aftp.put(filename);
                outputs 
= new DataOutputStream(outs);
                
while (sendFile.getFilePointer() < sendFile.length()) {
                    ch 
= sendFile.read();
                    outputs.write(ch);
                }


                rename(filename.substring(
15, filename.length()), filename
                        .substring(
20, filename.length()));
                outs.close();
                sendFile.close();

                message 
= "上传" + filepathname + "文件成功!";
                System.out.println(message);
                log(RWFileDir, message);
            }
 catch (IOException e) {
                message 
= "上传" + filepathname + "文件失败!" + e;
                System.out.println(message);
                log(RWFileDir, message);
                result 
= false;

            }

        }
 else {
            result 
= false;
        }

        
return result;
    }


    
public void rename(String oldName, String newName) {

        
// aftp.renameTo(oldName,newName);
        File Old = new File(oldName); // oldName
        File New = new File(newName); // newName
        
// aftp.renameTo(New);
        
// boolean Old.renameTo(File newName);
        
// System.out.println(Old);
        
// System.out.println(New);

    }


    
public static void deleFile(String RWFileDir) {
        
// try {
        
// 取得ReadFile目录下的txt文件
        String sdir = RWFileDir + "subunsubfromsp/";
        File fdir 
= new File(sdir);
        String FileName 
= "";
        
int j = fdir.list().length;

        System.out.println(sdir 
+ "目录下要删除的文件数:" + fdir.list().length);
        File file;
        
for (int i = 0; i < j; i++{
            
// 删除subunsubfromsp中的txt文件
            FileName = RWFileDir + "subunsubfromsp/" + (fdir.list())[0];
            file 
= new File(FileName);
            file.delete();
            System.out.println(
"已经成功删除" + FileName + "文件!");
        }

        
// }
        
// catch (IOException e) {
        
// System.out.println("删除txt文件错误!");
        
// e.printStackTrace();
        
// }
    }


    
public void showFileContents(String strdir) {
        StringBuffer buf 
= new StringBuffer();
        
try {
            aftp.cd(strdir);
            ins 
= aftp.list();
            
while ((ch = ins.read()) >= 0{
                buf.append((
char) ch);
            }


            System.out.println(buf.toString());

            ins.close();
        }
 catch (IOException e) {
        }

    }


    
// 返回当前目录的所有文件及文件夹

    
public ArrayList getFileList() throws IOException {
        BufferedReader dr 
= new BufferedReader(new InputStreamReader(aftp
                .list()));
        ArrayList al 
= new ArrayList();
        String s 
= "";
        
while ((s = dr.readLine()) != null{
            al.add(s);
        }

        
return al;
    }


    
public void setPath(String path) throws IOException {
        
if (aftp == null)
            
this.path = path;
        
else {
            aftp.cd(path);
        }

    }


    
// 返回当前目录的文件名称

    
public ArrayList getNameList(String RWFileDir) throws IOException {

        BufferedReader dr 
= new BufferedReader(new InputStreamReader(aftp
                .nameList(
"subunsubtosp/")));
        ArrayList al 
= new ArrayList();
        String s 
= "";
        
while ((s = dr.readLine()) != null{
            al.add(s);
            s 
= s.substring(13, s.length());
            isFile(s);
            downloadFile(RWFileDir, s);
            
// String strFileDelF = aftp.nameList("subunsubtosp/");
            File fileDelF = new File(s);
            fileDelF.delete();
        }

        
return al;
        
// System.out.println(al.add(s));
    }


    
// 判断一行文件信息是否为目录

    
public boolean isDir(String line) {
        
return ((String) parseLine(line).get(0)).indexOf("d"!= -1;
    }


    
public boolean isFile(String line) {
        
return !isDir(line);
    }


    
// 处理getFileList取得的行信息

    
private ArrayList parseLine(String line) {
        ArrayList s1 
= new ArrayList();
        StringTokenizer st 
= new StringTokenizer(line, " ");
        
while (st.hasMoreTokens()) {
            s1.add(st.nextToken());
        }

        
return s1;
    }


    
// 写消息日志
    public static void log(String RWFileDir, String msg) {
        String message 
= "";
        
try {
            java.text.DateFormat df 
= new java.text.SimpleDateFormat(
                    
"yyyy-MM-dd HH:mm:ss");
            java.text.DateFormat dflog 
= new java.text.SimpleDateFormat(
                    
"yyyyMMdd");
            java.util.Date date 
= new java.util.Date();
            String datestr 
= df.format(new java.util.Date());
            String datelog 
= dflog.format(new java.util.Date());
            
// String datelog = datestr.substring(0,10);
            
// datelog = datelog.replace('-',' ');

            
// 按日期每天生成一个日志文件
            FileWriter fwl = new FileWriter(RWFileDir + "CMSSftp" + datelog
                    
+ ".log"true);
            PrintWriter outl 
= new PrintWriter(fwl);
            outl.println(datestr 
+ "  " + msg);
            outl.close();
            fwl.close();
        }
 catch (IOException e) {
            message 
= "写log文件错误!" + e;
            e.printStackTrace();
            log(RWFileDir, message);
            System.out.println(message);
        }

    }


}

相关文章推荐

edtftp1.5.4破解文件

  • 2008-02-20 10:19
  • 618B
  • 下载

Redis源码剖析和注释(二十三)--- Redis Sentinel实现(哨兵的执行过程和执行的内容)

Redis Sentinel实现(上)1. Redis Sentinel 介绍和部署请参考Redis Sentinel 介绍与部署sentinel.c文件详细注释:Redis Sentinel详细注释...

Ubuntu14.04源码编译安装CPU版本的tensorflow

Ubuntu14.04源码编译安装CPU版本的tensorflow 说明:由于某种原因,我们需要编译tensorflow的源码包来进行安装 环境说明: os:Ubuntu 14.04 arch:x86...

云客Drupal8源码分析之国际化Internationalization:核心翻译系统

在开始新系统的学习前,建议先闭上眼睛想一下如果是自己来设计,会怎么实现呢,这会很有趣,而且对后面的学习大有帮助,也可避免出现填鸭式教育学习的饱腹感导致的情绪上的波动甚至厌烦,比如翻译系统我们就可以这样...

[netty核心类]--ChannelPipeline和ChannelHandler源码分析

本文主要包括: (1)ChannelPipeline的功能说明和源码分析; (2)ChannelHandler的功能说明和源码分析; 在netty中的ChannelPipeline和Cha...

android WebView详解,常见漏洞详解和安全源码(下)

上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑。   上篇:android WebView详解,常见漏洞详解和安全源码(上)   转载请注明出处...

Handler源码窥探。

这里总结一下刷新UI的方法:Handler.post(Runnable) Handler.sendMessage() View.post(Runnable) AsyncTask Activity.ru...

dlmalloc 2.8.6 源码详解—[0]基础知识

前述Dlmalloc是一个著名的内存分配器,最早由Doug Lea在1980s年代编写.由于早期C库的内置分配器在某种程度上的缺陷,因此dlmalloc出现后立即获得了广泛应用,足见其出色的表现.尽管...

Android 源码编译详解【二】:VMware12/Ubuntu16 下载、安装图解

软件下载与安装 1、       软件下载 1.1、VMwareWorkstation v12.0下载 VMware Workstation是一款运行在Windows上的虚拟PC软件,它提供专业技术人...

CI框架源码研读(路由解析)

上篇文章当中我们提到,在CodeIgniter.php中,解析出你访问的url所对应的controllers和action,然后在调用call_user_func_array()方法,进入到actio...
  • chanya
  • chanya
  • 2016-06-12 17:46
  • 1283
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)