sun.net.ftp.FtpClient对应的jar谁有?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sun.net.ftp.FtpClient对应的jar谁有?相关的知识,希望对你有一定的参考价值。

void closeServer () throws IOException
void openServer (String host) throws IOException
void openServer (String host, int port) throws IOException
void login (String user, String password) throws IOException
TelnetInputStream get (String filename) throws IOException
TelnetOutputStream put (String filename) throws IOException
TelnetOutputStream append (String filename) throws IOException
TelnetInputStream list () throws IOException
TelnetInputStream nameList (String path) throws IOException
void cd (String remoteDirectory) throws IOException
void cdUp () throws IOException
String pwd () throws IOException
void binary () throws IOException
void ascii () throws IOException
void rename (String from, String to) throws IOException
String system () throws IOException
void noop () throws IOException
void reInit () throws IOException
FtpClient (String host) throws IOException
FtpClient (String host, int port) throws IOException
FtpClient ()
FtpClient (Proxy p)
这是jar里面对应的接口

参考技术A var baseText3=null
function srsd()
var popUp3=document.getElementById("popupcontent3");
popUp3.style.top="";
popUp3.style.left="";
if (baseText3==null)
baseText3=popUp3.innerhtml;
popUp3.innerHTML=baseText3+"<div id=\"statusbar3\"><a onclick=\"hidePopup3();\">
</a></div>";

sun公司和apache使用ftpclient的区别

  最近因为使用FTP实现上传下载,因为已经有前辈使用了,照着敲了一遍(绝对没有复制粘贴啊,发誓)。但是今天突然发现FTPClient还不一样,仔细看了看,一个是sun.net.ftp.FtpClient,一个是org.apache.commons.net.ftp.FTPClient,吓得我赶紧在网上找了找区别,仔细一看区别不是太大,还是不够细心啊,一开始竟然没发现不一样,还好亡羊补牢为时未晚。

首先我们来看一下sun的FtpClient代码:

public static boolean uploadFileBySun(StringBuffer fileContent,String server,String userName, String userPassword, String path, 
    String fileName) { FtpClient ftpClient
= new FtpClient(); try { //打开ftp服务器 ftpClient.openServer(server); //使用指定用户登录 ftpClient.login(userName, userPassword); //转到指定路径 ftpClient.cd(path); TelnetOutputStream os = null; //新建一个文件 // os = ftpClient.put(new String(fileName.getBytes("GBK"), "iso-8859-1")); os = ftpClient.put(fileName); OutputStreamWriter osw = new OutputStreamWriter(os); BufferedWriter bw = new BufferedWriter(osw); bw.write(fileContent.toString()); bw.flush(); bw.close(); } catch (Exception e) { System.out.println(e.getMessage()); return false; } finally { try { //关闭ftp连接 ftpClient.closeServer(); } catch (Exception e) { e.printStackTrace(); } } return true; }

  正如上面的代码,上传文件分为六步,第一步,打开ftp服务器,第二步,使用指定用户名以及密码登陆,第三步,转到指定文件路径,第四步,创建一个文件,第五步,往文件里面写东西,并关闭文件,第六步,释放ftp连接。最后一步释放ftp连接很重要,一般ftp服务器连接数都是有限的,所以不管文件上传成功或是失败都必须释放连接。

  上面这个例子上传的文件是字符串文本,必须要提的是,如果上传的字符串文本较长(我项目中上传的文本大概在160kb上下),使用上面的方法可能会出现字符串丢失的情况,原因不明,可能跟缓存有关,所以如果文本较长,建议用户使用字节流。还有一个问题,如果要上传的文件名是中文的话,上传的文件名将是乱码,乱码问题我尝试许多转码也解决不了,于是不得不使用下面的方法了。

接下来就是Apache的FTPClient代码:

public static boolean uploadFileByApacheByBinary(StringBuffer fileContent,String server,String userName, String userPassword, 
    String path, String fileName) { FTPClient ftpClient
= new FTPClient(); try { InputStream is = null; is = new ByteArrayInputStream(fileContent.toString().getBytes()); ftpClient.connect(server); ftpClient.login(userName, userPassword); ftpClient.changeWorkingDirectory(path); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.storeFile(new String(fileName.getBytes("GBK"), "iso-8859-1") , is); is.close(); } catch (Exception e) { e.printStackTrace(); return false; } finally { if(ftpClient.isConnected()) { try { ftpClient.disconnect(); } catch (Exception e) { e.printStackTrace(); } } } return true; }

  Apache上传文件的步骤跟sun的实现基本一致,只是方法名有些区别而已。在这里我将字符串文本转换成了ByteArrayInputStream字节缓冲流,这是个很有用的东西,常用来进行字符到流的转换。转换成字节上传就不会出现丢失文件内容的情况了。

  ftpClient.storeFile(new String(fileName.getBytes(“GBK”), “iso-8859-1″) , is)这句代码将is输入流的东西上传到ftp服务器的fileName文件中,在这里我们对fileName文件名进行了转码,经测试中文没有乱码(ftp服务器使用的是window,其他平台未测试),而如果我们使用sun的ftp实现,即使文件名进行这样类似的转码,依然是乱码。 
  两种方法大家可以根据自己需要选择, 如果使用Apache的FTPClient的,我们需要在工程里面加入commons-net.jar。

原文转自:http://ower22.iteye.com/blog/2126633




以上是关于sun.net.ftp.FtpClient对应的jar谁有?的主要内容,如果未能解决你的问题,请参考以下文章

sun公司和apache使用ftpclient的区别

怎么用Java实现FTP上传

java 怎么查看ftp目录是不是存在

java FTPClient如何删除远程服务器端的文件夹及其子文件夹及其内容!

根据UI找对应的j s 脚本

匈牙利算法--java