Using apache commons Ftp library in Android
1) Download commons-net-2.0-src files
Download the source files commons-net-2.0-src.zip or commons-net-2.0-src.tar.gz from http://commons.apache.org/net/download_net.cgi. I tried with the binaries version containing only the jar files. But when i add the jar files to my Android project, I got the error: "Conversion to Dalvik format failed with error 1".
2) Extract and copy Ftp and dependent source files to Android project
Extract the compressed source files. The files will be extracted to commons-net-2.0-src folder. Go to commons-net-2.0-src | src | main | java | org | apache | commons | net folder. Copy all .java files in the net folder and the subfolders ftp, io, util. Am copying only files required for Ftp to work. If need other network protocols then copy the corresponding subfolders also.
In Android project's src folder, create the folders org | apache | commons | net and paste the files and subfolders copied above in the newly created net folder.
Here's how it looks like in eclipse package explorer:
Note: There may be other better ways to import external source files to an eclipse project. But am quite new to eclipse. So the first simplest way i could come up now is to just copy the source files needed into Android's src folder.
package laval.apacheftpclient; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.SocketException; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import android.app.Activity; import android.os.Bundle; public class ApacheFTPClient extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); FTPClient mFTP = new FTPClient(); try { // Connect to FTP Server mFTP.connect("192.168.1.110"); mFTP.login("user", "password"); mFTP.setFileType(FTP.BINARY_FILE_TYPE); mFTP.enterLocalPassiveMode(); // Prepare file to be uploaded to FTP Server File file = new File("/path/to/filetotranfer"); FileInputStream ifile = new FileInputStream(file); // Upload file to FTP Server mFTP.storeFile("filetotranfer",ifile); mFTP.disconnect(); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }