Java. Holen Sie sich Datum der letzten Datei-änderung

Ich versuche, das Datum des letzten Datei-änderung mit Hilfe FTPClient Klasse:

FTPClient client = new FTPClient();
client.connect(hostname);
client.login(user, passwd);
client.changeWorkingDirectory(dir);
FTPFile[] files = client.listFiles();

for (FTPFile file : files) {
    SimpleDateFormat formatDate = new SimpleDateFormat("dd.MM.yyyy HH:mm");
    String formattedDate = formatDate.format(file.getTimestamp().getTime());
    System.out.println(file.getName() + "     " + file.getSize() + "     " + formattedDate);
}

Einige Dateien Zeit ist drucken nicht richtig: es ist 00:00 anstelle des wahren Wertes. Wo liegt mein Fehler und wie kann ich es lösen? Möglicherweise gibt es andere Methoden, diese Informationen zu bekommen?

Habe ich versucht zu implementieren, die gleiche Prozedur mit URLConnection:

String ftpUrl = "ftp://%s:%s@%s/%s";
String host = "ip address";
String user = "user name";
String pass = "password";
String filePath = "/folder name/";

ftpUrl = String.format(ftpUrl, user, pass, host, filePath);
System.out.println("URL: " + ftpUrl);
try {
    URL url = new URL(ftpUrl);
    URLConnection conn = url.openConnection();

    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String line;         //read from the urlconnection via the bufferedreader
    while ((line = bufferedReader.readLine()) != null) {
         System.out.println(line);
    }
} catch (IOException ex) {
    ex.printStackTrace();
}

Dateien, die Zeit hatte 00:00 mit FTPClient Klasse jetzt nicht haben, es überhaupt nicht. Wo ist mein Fehler? Kann sein, es hängt davon ab, Datei-Typ?

Vielen Dank!

  • Vermutlich sollte uns sagen, welche FTPClient Sie verwenden? Vermute, es ist der Apache-commons-net? Haben Sie überprüft den Rückgabewert von file.getTimeStamp() und file.getTimeStamp().getTime() um zu überprüfen, welche Zeit Sie denken, es ist?
  • Peter Liljenberg, ja. Ich verwendet, commons-net-3.3. file.getTimeStamp().getTime() gibt so etwas wie Sun Jun 01 00:00:00 EEST 2014.
  • file.getTimestamp() zurück java.util.GregorianCalendar[time=1401570000000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo
  • [id="Europe/Athens",offset=7200000,dstSavings=3600000,useDaylight=true,transitions=138,lastRule=java.util.SimpleTimeZone[id=Europe/Athens,offset=7200000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-
  • 1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2014,MONTH=5,WEEK_OF_YEAR=22,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=152,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=7200000,DST_OFFSET=3600000]
  • file.getTimestamp().getTimeInMillis() zurück 1401570000000

InformationsquelleAutor user3649515 | 2014-07-07
Schreibe einen Kommentar