apache ftpClientファイルアップロード

2179 ワード


最近ftpアップロードをして問題にぶつかって、最終的に解決して、今みんなに分かち合います.
ここには4つあります.
1、文字列を入力ストリームに変換する
String s = "this is my test string   ";
//          
ByteArrayInputStream fis = new ByteArrayInputStream(s.getBytes());

2、コードの設定
ftp.setControlEncoding("GBK");

3、受動モードに設定
ftp.enterLocalPassiveMode();

4、ファイル名のコードをアップロードしてダウンロードして、ファイル名が中国語の時、アップロードしてダウンロードしてコードを必要とするかもしれません
//      
boolean fb = ftp.storeFile(new String("test  .csv".getBytes("GBK"),"iso8859-1"), fis);

 
最終テストコードは次のとおりです.
package ftpTest;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
public class ApacheFtpTest {
	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		String s = "this is my test string   ";
		//          
		ByteArrayInputStream fis = new ByteArrayInputStream(s.getBytes());
		FTPClient ftp = new FTPClient();
		//host,  
		ftp.connect("127.0.0.1", 21);
		//    ,   iisc  ,        iisc     ,      
		ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
		//         ,    GBK,        
		ftp.setControlEncoding("GBK");
		//        ,          
		ftp.setControlKeepAliveReplyTimeout(15000);
		ftp.setConnectTimeout(15000);
		ftp.setControlKeepAliveTimeout(15000);
		//      ,              ,       。
		ftp.enterLocalPassiveMode();
		//    
		ftp.login("  ", "  ");
		System.out.println("login success");
		//     
		ftp.changeWorkingDirectory("/");
		//      
		ftp.storeFile("test.txt", fis);
                //      
		//boolean fb = ftp.storeFile(new String("test  .csv".getBytes("GBK"),"iso8859-1"), fis);
		ftp.logout();
	}

}