Прерывание FTP-соединения Исключение не выдается
Я пытаюсь сделать загрузчик ftp, который будет перезапускаться с места, где файл был прочитан в последний раз. Я буду хранить некоторые метаданные для этого. Но во время тестирования я выгоняю клиента, а также отключаю сервер. Но дескриптор не попадает в исключение, как указано в коде:
package fileresumes;
/**
*
* @author agarwall
*/
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Calendar;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPConnectionClosedException;
import org.apache.commons.net.ftp.FTPFile;
public class FileRes {
public static void main(String[] args) {
FTPClient client = new FTPClient();
FileOutputStream fos = null;
int totalBytesRead = 0;
try {
client.connect("localhost");
client.login("anonymous", "");
// The remote filename to be downloaded.
String filename = "testing.txt";
fos = new FileOutputStream(filename);
boolean append = false;
int offset = 0;
long last_modified = 0;
int size = 0;
//long ro = client.getRestartOffset();
//ro = client.getRestartOffset();
//Download file from FTP server;
final File file = new File("C:/users/deadman/Desktop/", "testing.txt");
if (file.exists()) {
last_modified = file.lastModified(); // lastModified() returns the milliseconds since 1970-01-01
append = true;
// Read offset from meta-data file
size = (int) file.length();
offset = size;
}
//Setting the offset to resume download
client.setRestartOffset(offset);
InputStream inputFileStream;
inputFileStream = client.retrieveFileStream("/large.txt");
int bytesRead = 0;
try {
OutputStream out = new FileOutputStream(file, append);
final byte[] bytes = new byte[1024];
while ((bytesRead = inputFileStream.read(bytes)) != -1) {
out.write(bytes, 0, bytesRead);
totalBytesRead += bytesRead;
}
inputFileStream.close();
out.flush();
int get_reply_code = client.getReplyCode();
System.out.println(get_reply_code);
} catch (IOException e) {
// I want my metadata to be updated here .
System.out.println("IOException");
} catch (RuntimeException e) {
// I want my metadata to be updated here .
System.out.println("Runtime Exception ");
} finally {
try {
int get_reply_code = client.getReplyCode();
System.out.println(get_reply_code);
if (fos != null) {
fos.close();
}
client.disconnect();
System.out.println("finish");
} catch (IOException e) {
}
}
} catch (Exception e) {
}
}
}
Может ли кто-нибудь помочь мне в случае разрыва соединения, как мы можем обработать исключение здесь.
1 ответ
Я пытался сделать что-то подобное, и пока единственное, что мне удалось сделать, - это попробовать другую команду. Я еще не получал никаких переводов в коде, но для меня, если я вхожу в систему и есть или тайм-аут, меня пинают и т. Д., Если я пытаюсь изменить папки (или что-то подобное), это вызывает исключение FTPConnectionClosedException. Я посмотрел вокруг Google, и разместил здесь вопрос, чтобы увидеть, есть ли лучший способ, но до сих пор ничего не слышал.