需求需要获取文件的最后一次修改时间,困扰后直接一个方法一个方法打印,终于搞清楚了。
使用的包是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–,
时间是什么:施展顺手牵羊之术
- mtime(mo5dify time):最后一次修改文件或目录的时间
- ctime(change time) :最后一次改变文件或目录(改变的是原数据即:属性)的时间
如:记录该文件的inode节点被修改的时间。 - 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;
}