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()
undfile.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 wieSun Jun 01 00:00:00 EEST 2014
. file.getTimestamp()
zurückjava.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ück1401570000000
InformationsquelleAutor user3649515 | 2014-07-07
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie einen Blick auf diese Java FTP-Beispiel - Get-und set-file modification time
File inputFile = new File("\\your IP\path to file");
filepath
in den Argumenten der MethodegetModificationTime
:ftp://user_name:password@ip_address//directory//
aber der return Ergebnis istNULL
getLastModificationTimeDate(java.lang.String filePath)
? Es liefert die Letzte änderung oder Aktualisierung von einer Datei oder einem Ordner als java.util.Date-Objekt.Einige FTP-Server unterstützen
public String getModificationTime(String pathname)
auf dieFTPClient
Klasse. Vielleicht könnten Sie versuchen, diesen Ansatz.