If you are looking for a FTP client for Android, then the following would work for you-
1. Use Apache FTP client
http://commons.apache.org/net/download_net.cgi
you will also need
http://commons.apache.org/io/download_io.cgi
2. FTP client used in Android
A nicely written class with provision to show progress.
http://code.google.com/p/andro-ftp/source/browse/trunk/src/net/abachar/androftp/transfers/manager/FTPTransferTask.java?r=32
I am pasting the class here in case it disappears from the source-
1. Use Apache FTP client
http://commons.apache.org/net/download_net.cgi
you will also need
http://commons.apache.org/io/download_io.cgi
2. FTP client used in Android
A nicely written class with provision to show progress.
http://code.google.com/p/andro-ftp/source/browse/trunk/src/net/abachar/androftp/transfers/manager/FTPTransferTask.java?r=32
I am pasting the class here in case it disappears from the source-
| package net.abachar.androftp.transfers.manager; | 
| import java.io.FileInputStream; | 
| import java.io.FileOutputStream; | 
| import java.io.IOException; | 
| import java.io.PrintWriter; | 
| import java.net.SocketException; | 
| import java.util.List; | 
| import net.abachar.androftp.MainApplication; | 
| import net.abachar.androftp.filelist.manager.FTPFileManager; | 
| import net.abachar.androftp.servers.Logontype; | 
| import org.apache.commons.io.input.CountingInputStream; | 
| import org.apache.commons.io.output.CountingOutputStream; | 
| import org.apache.commons.net.PrintCommandListener; | 
| import org.apache.commons.net.ftp.FTP; | 
| import org.apache.commons.net.ftp.FTPClient; | 
| import org.apache.commons.net.ftp.FTPReply; | 
| /** | 
| * | 
| * @author abachar | 
|  */ | 
| public class FTPTransferTask extends TransferTask { | 
|         /** */ | 
|         private FTPClient mFTPClient; | 
| /** | 
| * | 
|          */ | 
|         public FTPTransferTask(TransferTaskProgressListener progressListener, List<Transfer> transferList) { | 
|                 super(progressListener, transferList); | 
|         } | 
| /** | 
| * @see android.os.AsyncTask#doInBackground(Params[]) | 
|          */ | 
|         @Override | 
|         protected String doInBackground(Transfer... transfers) { | 
|                 // Create ftp client | 
|                 mFTPClient = new FTPClient(); | 
|                 mFTPClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); | 
|                 String retval = super.doInBackground(transfers); | 
|                 // Disconnect ftp client | 
|                 if ((mFTPClient != null) && mFTPClient.isConnected()) { | 
|                         try { | 
|                                 mFTPClient.logout(); | 
|                                 mFTPClient.disconnect(); | 
|                         } catch (IOException e) { | 
|                                 e.printStackTrace(); | 
|                         } | 
|                 } | 
|                 return retval; | 
|         } | 
| /** | 
| * @see net.abachar.androftp.transfers.manager.TransferTask#doInBackgroundDownload() | 
|          */ | 
|         @Override | 
|         protected void doInBackgroundDownload() { | 
|                 try { | 
|                         // Connect it if disconnected | 
|                         if (!mFTPClient.isConnected()) { | 
|                                 connect(); | 
|                         } | 
|                         // if (binaryTransfer) { | 
|                         mFTPClient.setFileType(FTP.BINARY_FILE_TYPE); | 
|                         // } | 
|                         // Go to directory | 
|                         if (!mFTPClient.printWorkingDirectory().equals(mCurrentTransfer.getSourcePath())) { | 
|                                 mFTPClient.changeWorkingDirectory(mCurrentTransfer.getSourcePath()); | 
|                         } | 
|                         // Open local file | 
|                         FileOutputStream fos = new FileOutputStream(mCurrentTransfer.getFullDestinationPath()); | 
|                         CountingOutputStream cos = new CountingOutputStream(fos) { | 
|                                 protected void beforeWrite(int n) { | 
|                                         super.beforeWrite(n); | 
|                                         int progress = Math.round((getCount() * 100) / mCurrentTransfer.getFileSize()); | 
|                                         mCurrentTransfer.setProgress(progress); | 
|                                         publishProgress(mCurrentTransfer.getId(), progress); | 
|                                 } | 
|                         }; | 
|                         // Download file | 
|                         mFTPClient.retrieveFile(mCurrentTransfer.getName(), cos); | 
|                         // Close local file | 
|                         fos.close(); | 
|                         // End of transfer | 
|                         publishProgress(mCurrentTransfer.getId(), 101); | 
|                 } catch (SocketException e) { | 
|                         e.printStackTrace(); | 
|                 } catch (IOException e) { | 
|                         e.printStackTrace(); | 
|                 } | 
|         } | 
| /** | 
| * @see net.abachar.androftp.transfers.manager.TransferTask#doInBackgroundUpload() | 
|          */ | 
|         @Override | 
|         protected void doInBackgroundUpload() { | 
|                 try { | 
|                         // Connect it if disconnected | 
|                         if (!mFTPClient.isConnected()) { | 
|                                 connect(); | 
|                         } | 
|                         // if (binaryTransfer) { | 
|                         mFTPClient.setFileType(FTP.BINARY_FILE_TYPE); | 
|                         // } | 
|                         // Open local file | 
|                         FileInputStream fis = new FileInputStream(mCurrentTransfer.getFullSourcePath()); | 
|                         CountingInputStream cis = new CountingInputStream(fis) { | 
|                                 protected void afterRead(int n) { | 
|                                         super.afterRead(n); | 
|                                         int progress = Math.round((getCount() * 100) / mCurrentTransfer.getFileSize()); | 
|                                         mCurrentTransfer.setProgress(progress); | 
|                                         publishProgress(mCurrentTransfer.getId(), progress); | 
|                                 } | 
|                         }; | 
|                         // Go to directory | 
|                         if (!mFTPClient.printWorkingDirectory().equals(mCurrentTransfer.getDestinationPath())) { | 
|                                 mFTPClient.changeWorkingDirectory(mCurrentTransfer.getDestinationPath()); | 
|                         } | 
|                         // Upload file | 
|                         mFTPClient.storeFile(mCurrentTransfer.getName(), cis); | 
|                         // Close local file | 
|                         fis.close(); | 
|                         // End of transfer | 
|                         publishProgress(mCurrentTransfer.getId(), 101); | 
|                 } catch (SocketException e) { | 
|                         e.printStackTrace(); | 
|                 } catch (IOException e) { | 
|                         e.printStackTrace(); | 
|                 } | 
|         } | 
| /** | 
| * @throws IOException | 
| * @throws SocketException | 
| * | 
|          */ | 
|         private void connect() throws SocketException, IOException { | 
|                 FTPFileManager fileManager = (FTPFileManager) MainApplication.getInstance().getServerFileManager(); | 
|                 // Connect to server | 
|                 mFTPClient.connect(fileManager.getHost(), fileManager.getPort()); | 
|                 // Check the reply code to verify success. | 
|                 int reply = mFTPClient.getReplyCode(); | 
|                 if (!FTPReply.isPositiveCompletion(reply)) { | 
|                         return; | 
|                 } | 
|                 if (fileManager.getLogontype() == Logontype.NORMAL) { | 
|                         if (!mFTPClient.login(fileManager.getUsername(), fileManager.getPassword())) { | 
|                                 mFTPClient.logout(); | 
|                                 return; | 
|                         } | 
|                 } | 
|                 // Use passive mode as default because most of us are | 
|                 // behind firewalls these days. | 
|                 mFTPClient.enterLocalPassiveMode(); | 
|         } | 
| } | 
MainActivity
ReplyDeletepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new ImageUploadTask().execute(i);
}
public class ImageUploadTask extends AsyncTask {
protected String doInBackground(String...args) {
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(InetAddress.getByName(SERVER));
ftpClient.login(USERNAME, PASSWORD);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
int reply = ftpClient.getReplyCode(); // 응답코드 체크
//textTargetUri.setText("good");
final String remote = "/1.jpg";//FTP adress/filename
String savefilepath = "/sdcard/download/1.jpg";
File get_file = new File(savefilepath);//download
OutputStream outputStream = new FileOutputStream(get_file);
ftpClient.retrieveFile(remote, outputStream );
long fileSize = 0;
FTPFile[] files = ftpClient.listFiles(remote);
if (files.length == 1 && files[0].isFile()) {
fileSize = files[0].getSize();
String a = String.valueOf(fileSize);
Log.d("File Size", a);
}
CountingOutputStream cos = new CountingOutputStream(outputStream) {
protected void beforeWrite(int n) {
super.beforeWrite(n);
int progress = Math.round((getCount() * 100) / 879394);
String b = String.valueOf(progress);
Log.d("File persent", b);
}
};
ftpClient.retrieveFile(remote, cos);
outputStream.close();
ftpClient.disconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
//textTargetUri.setText("finish");
}
return s;
}
}
CountingOutputStream error.
code no error.
APP start error.
What's wrong with the code, I do not know how?
please help me.