此功能是下接将FTP上的文件下载到本地硬盘指定位置,没有能过各种下载软件,对于下载软件的做法实验过多次,存在中文名称的文件不能下载的问题, 而且在TOMCAT下可以下载英文名称的文件,在WEBLOGIC下英文名称的文件下载后,无法使用,只有部分格式的可以用,如RAR.JPG等,对于中文名称的也无法下载,GOOGLE了N次最终没有解决,只知道是文件名编码格式问题,还望朋友多多指教,小弟感激不尽。
现将直接将文件下载到本地硬盘的代码如下:
一、创建JAVA类,部分代码没有上传,因没有测试过,以后有机会再给大家上传
package ftp;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.StringTokenizer;
import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
public class FtpFile {
String serverIp = "192.168.12.49";
String serverUser = "admin";
String serverPwd = "admin";
FtpClient aftp;
DataOutputStream outputs;
TelnetInputStream ins;
TelnetOutputStream outs;
int ch;
public String a;
String hostname = "";
private String path = "/";
public FtpClient connect(String RWFileDir, String hostname, int port,
String uid, String pwd) {
/*
* this.hostname = hostname;
* System.out.println("正在连接"+hostname+",请等待....."); try{ aftp = new
* FtpClient(hostname,port); aftp.login(uid,pwd); aftp.binary();
* //aftp.openPortDataConnection(); a = "连接主机:"+hostname+"成功!";
* System.out.println(a); } catch(FtpLoginException e){
* a="登陆主机:"+hostname+"失败!请检查用户名或密码是否正确:"+e; System.out.println(a);
* //return false; } catch (IOException e){
* a="连接主机:"+hostname+"失败!请检查端口是否正确:"+e; System.out.println(a); //return
* false; } catch(SecurityException e) {
* a="无权限与主机:"+hostname+"连接!请检查是否有访问权限:"+e; System.out.println(a);
* //return false; }
*/
// log(RWFileDir,a);
FtpClient ftpClient = null;
try {
ftpClient = new FtpClient();
// 创建FtpClient对象
ftpClient.openServer(hostname);
// 连接FTP服务器
ftpClient.login(uid, pwd);
// 登录FTP服务器
aftp = ftpClient;
aftp.cd(RWFileDir);
} catch (IOException ex) {
;
}
return ftpClient;
}
public void stop(String RWFileDir) {
String message = "";
try {
if (aftp != null) {
aftp.closeServer();
message = "与主机" + hostname + "连接已断开!";
System.out.println(message);
//log(RWFileDir, message);
}
} catch (IOException e) {
message = "与主机" + hostname + "断开连接失败!" + e;
System.out.println(message);
log(RWFileDir, message);
}
}
public void showFileContents(String strdir) {
StringBuffer buf = new StringBuffer();
try {
aftp.cd(strdir);
ins = aftp.list();
while ((ch = ins.read()) >= 0) {
buf.append((char) ch);
}
System.out.println("buf-------------" + buf.toString());
ins.close();
} catch (IOException e) {
}
}
// 返回当前目录的所有文件及文件夹
public ArrayList getFileList() throws IOException {
BufferedReader dr = new BufferedReader(new InputStreamReader(aftp
.list()));
ArrayList a1 = new ArrayList(); // 存放文件
// ArrayList a2&