У меня есть маленький кусочек кода ниже, который загружает файл в Java, код работает правильно, однако он долго зависает при открытии выходного потока.
// open file to upload
InputStream filein = new FileInputStream("/path/to/file.txt");
// connect to server
URL url = new URL("ftp://user:pass@host/dir/file.txt");
URLConnection urlConn = url.openConnection();
urlConn.setDoOutput(true);
// write file
// HANGS FROM HERE
OutputStream ftpout = urlConn.getOutputStream();
// TO HERE for about 22 seconds
byte[] data = new byte[1024];
int len = 0;
while((len = filein.read(data)) > 0) {
ftpout.write(data,0, len);
}
// close file
filein .close();
ftpout.close();
В этом примере метод URLConnection.getOutputStream () зависает примерно на 22 секунды, прежде чем продолжить работу в обычном режиме, файл успешно загружен. В данном случае размер файла составляет всего 4 байта, это просто текстовый файл со словом «test» в нем, и код зависает до начала загрузки, поэтому это происходит не потому, что для загрузки файла требуется время.
Это происходит только при подключении к одному серверу, когда я пытаюсь использовать другой сервер так быстро, я могу надеяться, что это заставляет меня думать, что это проблема конфигурации сервера, и в этом случае этот вопрос больше подходит для сбоя сервера, однако, если я загружаю из FTP-клиента (в моем случае FileZilla), он работает нормально, так что может быть что-то, что я могу сделать с кодом, чтобы это исправить.
Есть идеи?