java的sftp的属性问题

需求需要获取文件的最后一次修改时间,困扰后直接一个方法一个方法打印,终于搞清楚了。
使用的包是jsch-0.1.53.jar。

连接sftp

    public SFTP(String ip, String name, String pwd, int port) {
        this.ip = ip;
        this.name = name;
        this.pwd = pwd;
        this.port = port;
    }

    public  ChannelSftp conect(){
        JSch jsch = new JSch();  
        ChannelSftp chSftp = null;
        try {
            session = jsch.getSession(name, ip, port);
            session.setPassword(pwd);  //设置密码
            session.setTimeout(100000);  
            Properties config = new Properties();  
            config.put("StrictHostKeyChecking", "no");  
            session.setConfig(config);  
            session.connect();  
            channel = session.openChannel("sftp");  
            channel.connect();  
            chSftp = (ChannelSftp) channel;
            sftp = chSftp;
            FileUtils.printLine("sftp连接成功");
        } catch (JSchException e) {
            FileUtils.printLine("sftp连接失败");
            e.printStackTrace();
        }  
        return chSftp;
    }

查看属性

    public void look(){
        String path = "目录";
        String fileName = "文件名";
        Vector files ;
        try {
            files =sftp.ls(path);
        } catch (SftpException e) {
            e.printStackTrace();
        }

        /*for( int i=0;i<files.size();i++){
            LsEntry file = (LsEntry) files.get(i);
            String fileName = file.getFilename();//file直接打印是权限,大小,创建时间,文件名等;file.toString().substring(56)
        }*/

        SftpATTRS sa = null;//get 属性信息
        String pathAddName = null;
        pathAddName = path +"/"+  fileName;//文件的全路径,f是file
        try {
            sa = sftp.lstat(pathAddName);
//          sa.toString();
//          sa.getATime();
//          sa.getAtimeString();
//          sa.getMtimeString();
//          sa.getPermissionsString();
            sa.getMTime();

//printfLine是我写的一个方法,包装了printf
            FileUtils.printfLine("sa.toString()%s,\nsa.getATime()%s,\nsa.getAtimeString()%s,\nsa.getMtimeString()%s,\nsa.getMTime()%s,\nsa.getPermissionsString()%s,\n", 
            sa.toString(),sa.getATime(),sa.getAtimeString(),sa.getMtimeString(),sa.getMTime(),sa.getPermissionsString());
        } catch (SftpException e) {
            e.printStackTrace();
        }
    }

输出结果如下:

downloadLog.SFTP.conect(SFTP.java:61)
sftp连接成功
downloadLog.SFTP.set(SFTP.java:103)
sa.toString()-rw-r–r– 0 0 18063 Tue Aug 14 03:55:02 CST 2018,
sa.getATime()1534349424,
sa.getAtimeString()Thu Aug 16 00:10:24 CST 2018,
sa.getMtimeString()Tue Aug 14 03:55:02 CST 2018,
sa.getMTime()1534190102,
sa.getPermissionsString()-rw-r–r–,

时间是什么:施展顺手牵羊之术

  1. mtime(mo5dify time):最后一次修改文件或目录的时间
  2. ctime(change time) :最后一次改变文件或目录(改变的是原数据即:属性)的时间
    如:记录该文件的inode节点被修改的时间。
  3. atime(access time)::最后一次访问文件或目录的时间

将时间字符串转换为calendar

timeStr:Thu Aug 16 00:10:24 CST 2018

    public Calendar getCalendar(String str){
        Calendar cal = Calendar.getInstance();
        String pattern = "EEE MMM dd HH:mm:ss zzz yyyy";   
        SimpleDateFormat df = new SimpleDateFormat(pattern,Locale.US);
        Date date = null;
        try {
            date = df.parse(str);
        } catch (ParseException e) {
            e.printStackTrace();
        } 
        cal.setTime(date);
        return cal;
    }
Java SFTP连接是指使用Java编程语言与远程服务器进行安全文件传输协议(SFTP)通信的过程。在Java中,可以使用JSch库来实现SFTP连接。 以下是使用Java进行SFTP连接的基本步骤: 1. 导入JSch库:在Java项目中,首先需要导入JSch库,以便使用其中的类和方法。可以通过在项目中添加JSch库的依赖或手动导入jar包的方式进行导入。 2. 创建JSch对象:使用JSch类的实例化对象,创建一个JSch对象。 3. 创建Session对象:通过调用JSch对象的getSession方法,创建一个Session对象。在创建Session对象时,需要设置连接的主机名、端口号、用户名和密码等信息。 4. 设置连接属性:可以通过Session对象的setConfig方法设置一些连接属性,例如设置连接超时时间、禁用主机密钥检查等。 5. 连接到远程服务器:通过Session对象的connect方法,与远程服务器建立连接。 6. 打开SFTP通道:通过Session对象的openChannel方法,打开一个SFTP通道。 7. 连接到SFTP服务器:通过打开的SFTP通道,调用connect方法连接到SFTP服务器。 8. 执行SFTP操作:通过SFTP通道,可以执行一系列的SFTP操作,例如上传文件、下载文件、删除文件等。 9. 关闭连接:在完成SFTP操作后,需要关闭SFTP通道和Session对象,释放资源。 下面是相关问题: 1. 什么是SFTP? 2. 除了JSch,还有其他的Java库可以用于SFTP连接吗? 3. 如何在Java中上传文件到SFTP服务器? 4. 如何在Java中下载SFTP服务器上的文件? 5. SFTP连接过程中可能会遇到的常见问题有哪些? 6. 如何处理SFTP连接异常? 7. SFTP连接是否支持文件夹的操作? 8. SFTP连接是否支持断点续传? 9. SFTP连接是否支持文件权限的设置? 10. SFTP连接是否支持文件的压缩和解压缩操作?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值