お世話になっております。
現在、JavaでFTPアップロードを行う。 - sinsengumi血風録を参考にFTP通信を行うプログラムを作成しています。
送信中はサーバーにlockファイルを作成し、送信が終わったら作成したlockファイルを削除するプログラムにしたいのですが、下記のように作成したところlockファイル自体の作成と削除はできるのですが、肝心のファイル送信自体がうまく行きません。
ストリームの理解が足りないまま併用をしているのが原因だと思うのですが、ご教授をお願いします。
lang
1 private static void execute() throws Exception { 2 3 FTPClient ftpClient = new FTPClient(); 4 OutputStream out = null; 5 6 try { 7 8 // エンコーディングの設定は、connectする前に行う。 9 ftpClient.setControlEncoding("UTF8"); 10 11 // FTPサーバに接続 12 ftpClient.connect(FTP_HOST); 13 14 ftpClient.setSoTimeout(20000); 15 16 // ログイン 17 ftpClient.login(FTP_USER, FTP_PASSWORD); 18 19 // PASVモードに設定 20 ftpClient.pasv(); 21 22 // データの変換モードをバイナリに設定 23 ftpClient.setFileType(FTP.BINARY_FILE_TYPE); 24 25 //ロックファイル作成 26 out = ftpClient.storeFileStream("0001.lock"); 27 out.close(); 28 29 Thread.sleep(2000); 30 31 // ファイル転送 32 FileInputStream fis = new FileInputStream(UPLOAD_FILE); 33 34 ftpClient.storeFile(UPLOADED_FILENAME, fis); 35 36 Thread.sleep(2000); 37 38 ftpClient.deleteFile("0001.lock"); 39 40 } catch (NumberFormatException e) { 41 throw new Exception("FTPポートの値が数値ではありません。", e); 42 } catch (SocketException e) { 43 throw new Exception("Socket通信に失敗しました。", e); 44 } catch (FileNotFoundException e) { 45 throw new Exception("アップロードするファイルが見つかりません。", e); 46 } catch (IOException e) { 47 throw new Exception("IOレベルで例外が発生しました。", e); 48 } finally { 49 if (out != null) { 50 out.close(); 51 } 52 if (ftpClient.isConnected()) { 53 try { 54 ftpClient.logout(); 55 ftpClient.disconnect(); 56 System.out.println("disconnect complete"); 57 } catch (IOException e) { 58 // ignore 59 } 60 } 61 } 62 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/03/03 09:08
2015/03/03 09:38
2015/03/03 09:45
2015/03/03 09:56
2015/03/03 10:01
2015/03/03 14:31
2015/03/04 01:53