FTPS接続をし、対象フォルダにあるファイル名一覧を取得したいです。
ファイルはcsv形式で
文字コードはUTF-8です。
現状は、
for分のところの
names.lengthが0です。
java
1FTPClient ftpclient = new FTPClient(); 2RemoteDir = "Sample/test"; 3 4try { 5 // サーバに接続 6 ftpclient.connect(hostName); 7 8 if (!FTPReply.isPositiveCompletion(ftpclient.getReplyCode())) { 9 log("connection failed", "", 1); 10 } 11 12 // ログイン 13 if (ftpclient.login(userName, password) == false) { 14 log("login failed", "", 1); 15 } 16 17 // アスキーモードに設定 18 ftpclient.setFileType(FTPClient.ASCII_FILE_TYPE); 19 20 // カレントディレクトリを変更 21 ftpclient.changeWorkingDirectory(RemoteDir); 22 // カレントディレクトリの中の全ファイルを取得 23 FTPFile[] names = ftpclient.listFiles(); 24 25 for( int i=0 ; i < names.length ; i++){ 26 String eachFileName = names[i].getName(); 27 28 if(eachFileName.length()>3){ 29 // ファイルを受信 30 os = new FileOutputStream(LocalDir + eachFileName); 31 ftpclient.retrieveFile(RemoteDir + eachFileName, os); 32 os.close(); 33 // 一行ずつ処理する 34 writeDatabaseFromCSV(eachFileName); 35 } 36 } 37} catch (Exception e) { 38 return false; 39} finally { 40 ftpclient.disconnect(); 41 os.close(); 42}
FTPS接続先の
testというフォルダの中に
A.csv
B.csv
C.csv
取得できない、とはどうなるんでしょう。
エラーが出るならエラーメッセージを提示してください
通信先のディレクトリ内のファイルが取得できません。
RemoteDirには何が入るのですか?
ここでは仮で
Sample/test
としておきます。
WinSCPでFTPS通信先のディレクトリにアクセスし、
Sampleというフォルダ
その中にtestというフォルダがある感じです。
切り分けとして適当なFTPSクライアントソフトを使用して正常にファイルが表示できるか確認してみてはどうでしょうか。
どんなライブラリのどんなクラスを使っているのか書かないと誰も何も言えないと思いますよ。
現状を見る限り、FTP/FTPSの違いを分かっているのかどうかも怪しいし、Javaも分かっているのか怪しく見えます。
なので、多分皆さん原因に目星がついていても、説明が面倒なので手をつけないだけだと思います。
まずはちゃんと書きましょう。
ftpclient.changeWorkingDirectory(RemoteDir);
は成功していらっしゃいますか?
ftpclient.changeWorkingDirectory(RemoteDir);は成功していないと思います。
どこのパスにいる状況かわかるようにログに出したいですが、
String型で出せますでしょうか
changeWorkingDirectory の成功/失敗に関しましては, 例外の他, 返値の true/false がそれに当たると思います.
printWorkingDirectory メソッドが現在のワーキングディレクトリを返すようです.
ftpclient.changeWorkingDirectory(RemoteDir);の後に
printWorkingDirectoryでログを出力したところ、
RemoteDirのパス上に移動できています
FTPFile[] names = ftpclient.listFiles();の
names.lengthは"0"でした
回答1件
あなたの回答
tips
プレビュー