1.坦率地说,如果您使用的是开源的,那么请利用外部库。
2.不要重新发明轮子,你有信任库在您的处置,所以用它。
我还附上我的计划,我曾经上传和下载的歌曲到ftp server
使用apache's common lib
上传:
public void goforIt(){
FTPClient con = null;
try
{
con = new FTPClient();
con.connect("192.168.2.57");
if (con.login("Administrator", "KUjWbk"))
{
con.enterLocalPassiveMode(); // important!
con.setFileType(FTP.BINARY_FILE_TYPE);
String data = "/sdcard/vivekm4a.m4a";
FileInputStream in = new FileInputStream(new File(data));
boolean result = con.storeFile("/vivekm4a.m4a", in);
in.close();
if (result) Log.v("upload result", "succeeded");
con.logout();
con.disconnect();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
你下载过:
public void goforIt(){
FTPClient con = null;
try
{
con = new FTPClient();
con.connect("192.168.2.57");
if (con.login("Administrator", "KUjWbk"))
{
con.enterLocalPassiveMode(); // important!
con.setFileType(FTP.BINARY_FILE_TYPE);
String data = "/sdcard/vivekm4a.m4a";
OutputStream out = new FileOutputStream(new File(data));
boolean result = con.retrieveFile("vivekm4a.m4a", out);
out.close();
if (result) Log.v("download result", "succeeded");
con.logout();
con.disconnect();
}
}
catch (Exception e)
{
Log.v("download result","failed");
e.printStackTrace();
}
}
谢谢!你的详细答案真的帮了我很大的忙,我想我会用第一种方式去处理100-200M文件,并且失去连接可能会非常昂贵......因为即使我需要重新出演,问题出在FTP服务器上。 – Noam 2012-07-23 19:30:17
当您使用2个打开的流时,只能对小数据量(buf,buffer)进行重试。下载连接将长时间打开(您将等待上传),因此您的连接可能会被拒绝。如果您无法从偏移量继续下载,则必须重新开始整个过程。 – alexsmail 2012-07-24 08:22:37