Ich lade Dateien von einem Server mit FTPClient in Java. Wenn die Datei heruntergeladen wird, möchte ich ihre Integrität überprüfen und sie dann löschen. Ich mache dies, indem ich die Größe der heruntergeladenen Datei in Bytes und der Datei auf dem Server in Bytes vergleiche, aber die Ergebnisse sind nicht wie erwartet.Dateien, die ich von einem FTP-Server herunterladen, haben nicht die gleiche Länge wie die Dateien auf dem Server
Im Folgenden ein Auszug aus meinem Transferverzeichnis:
for (int i = 0; i <= insideDirectory.length - 1; i++) {
FTPFile transferFile = insideDirectory[i];
LOGGER.info("Passing file" + folder.getName() + "/" + transferFile.getName());
File downloadFile = new File("https://stackoverflow.com/users/home/example" + i + ".mp4");
OutputStream outputStream2 = new BufferedOutputStream(new FileOutputStream(downloadFile));
System.out.println(transferFile.getSize());
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
InputStream inputStream = ftpClient
.retrieveFileStream(folder.getName() + "/" + transferFile.getName());
byte[] bytesArray = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inputStream.read(bytesArray)) != -1) {
outputStream2.write(bytesArray, 0, bytesRead);
}
Boolean success = ftpClient.completePendingCommand();
if (success) {
System.out.println("File #" + i + " has been downloaded successfully.");
checkIfExists(downloadFile, transferFile);
}
Unten ist meine checkIfExists
Methode
public void checkIfExists(File downloadedFile, FTPFile remoteFileToDelete) {
Long downloadedLength = downloadedFile.length();
Long remoteLength = remoteFileToDelete.getSize();
if (downloadedFile.length() == remoteFileToDelete.getSize()) {
LOGGER.info(downloadedLength + "exists and is the same length as " + remoteLength + ". Let's delete");
} else {
LOGGER.info(downloadedLength + "is not the same length as " + remoteLength + ". Let's not delete");
}
}
Hier die Ausgabe ist nach der Schleife zweimal ausgeführt wird, wie man sehen kann, ist die Größe von die heruntergeladene Datei kann variieren:
File #0 has been downloaded successfully.
INFO: 7596008is not the same length as 7600840. Let's not delete
File #1 has been downloaded successfully.
INFO: 6873664is not the same length as 6878544. Let's not delete
File #2 has been downloaded successfully.
INFO: 7558112is not the same length as 7564744. Let's not delete
File #3 has been downloaded successfully.
INFO: 8662336is not the same length as 8665108. Let's not delete
File #0 has been downloaded successfully.
INFO: 7594312is not the same length as 7600840. Let's not delete
File #1 has been downloaded successfully.
INFO: 6870392is not the same length as 6878544. Let's not delete
File #2 has been downloaded successfully.
INFO: 7559184is not the same length as 7564744. Let's not delete
File #3 has been downloaded successfully.
INFO: 8660888is not the same length as 8665108. Let's not delete
Wie würde ich das überprüfen? – steam1234322
Ist die Ausgabe auf der Unterseite nicht ausreichend? Es vergleicht die Größe in Bytes beider Dateien – steam1234322
Ahh, ich verstehe. Dann hat Alnitak es herausgefunden. –