2014-10-15 7 views
2

Пожалуйста, хочу получить дату создания удаленного файла, но я не нашел метод, который дает эту опцию. я могу получить только дату последнего изменения, но я хочу, чтобы получить дату создания этого файла:JAVA: получить дату создания удаленного файла через sftp

вот мой код:

import com.jcraft.jsch.Channel; 
import com.jcraft.jsch.ChannelSftp; 
import com.jcraft.jsch.JSch; 
import com.jcraft.jsch.JSchException; 
import com.jcraft.jsch.Session; 
import com.jcraft.jsch.SftpException; 
import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 

public class mytest { 


    public static void main(String args[]) throws ParseException { 

     //=============================================================== 
     String hostname = "10.10.11.19"; 
     String username = "root"; 
     String password = "passwword"; 
     String remoteFile = "/opt/test_pyt/teeeeeeest.txt" 
     String copyTo = "/home/desk/Desktop"; 
     JSch jsch = new JSch(); 
     Session session = null; 
     System.out.println("Trying to connect....."); 
     try { 
      session = jsch.getSession(username, hostname, 22); 
      session.setConfig("StrictHostKeyChecking", "no"); 
      session.setPassword(password); 
      session.connect(); 
      Channel channel = session.openChannel("sftp"); 
      channel.connect(); 
      ChannelSftp sftpChannel = (ChannelSftp) channel; 
      //get date of file========================================= 
      String lastModif = sftpChannel.lstat(remoteFile).getMtimeString(); 

      //I want to get creation date ============================= 
      creation_date= ???????????; 

      //============================================== 
       sftpChannel.get(remoteFile, copyTo); 
       sftpChannel.exit(); 
       session.disconnect(); 


     } catch (JSchException e) { 
     } catch (SftpException e) { 
     } 

    } 
} 

Спасибо

+0

Не все файловые системы записи о времени создания файла. Не может быть никакой ценности. – Kenster

ответ

1

SFTP standard не включают способ получения даты создания файла. Вам не повезло, извините.

+0

есть ли другой способ получить эту информацию? – mond14

+0

Возможно, запустите оболочку 'ls -l' и прочитайте вывод в дату. – PeterMmm

+0

Файловые системы @PeterMmm Unix обычно не записывают время создания файла. mtime - это последний раз, когда содержимое файла изменилось, а ctime - последний раз, когда изменились данные inode. – Kenster

0

Да, вы можете сделать это с JSch:

Vector vec = channel.ls("File Name"); 
// Assumption only no duplicate file names on server 
if (vec != null && vec.size() == 1) { 
     LsEntry details = (LsEntry) vec.get(0); 
     SftpATTRS attrs = details.getAttrs(); 

     int t = attrs.getMTime(); 
     java.utl.Date modTime = new Date(t * 1000L); 

} 
Смежные вопросы