您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Java >> JAVA 如何实现FTP远程路径

JAVA 如何实现FTP远程路径

来源:网络整理     时间:2016/7/25 4:58:17     关键词:

关于网友提出的“ JAVA 如何实现FTP远程路径”问题疑问,本网通过在网上对“ JAVA 如何实现FTP远程路径”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: JAVA 如何实现FTP远程路径
描述:

请教高人:
     项目遇到:
     FTP 路径: 192.168.0.117  端口21
    user/pwd   sa/sa
    默认FTP 根路径  d:/testFTP
    
    如果直接从根目录下(testFTP) 上传下载文件都没有问题 ,现在是上传文件到该机器的 E:/download 文件夹下,就不知道怎么处理了。 如果用FTP 客户端有个 远程路径 写上 E:/download, 也可以登录到E:/download下。 请问有java如何处理?


解决方案1:

package nc.ui.doc.doc_007;  
 
import java.io.File;  
 import java.io.FileInputStream;  
 import java.io.FileOutputStream;  
 import java.io.IOException;  
 
import nc.itf.doc.DocDelegator;  
 import nc.vo.doc.doc_007.DirVO;  
 import nc.vo.pub.BusinessException;  
 import nc.vo.pub.SuperVO;  
 
import org.apache.commons.net.ftp.FTPClient;  
 import org.apache.commons.net.ftp.FTPFile;  
 import org.apache.commons.net.ftp.FTPReply;  
 import org.apache.commons.net.ftp.FTP;  
 
public class FtpTool {  
 
private FTPClient ftp;  
 
private String romateDir = "";  
 
private String userName = "";  
 
private String password = "";  
 
private String host = "";  
 
private String port = "21";  
 
public FtpTool(String url) throws IOException {  
 //String url="ftp://user:password@ip:port/ftptest/psd";  
 int len = url.indexOf("//");  
 String strTemp = url.substring(len + 2);  
 len = strTemp.indexOf(":");  
 userName = strTemp.substring(0, len);  
 strTemp = strTemp.substring(len + 1);  
 
len = strTemp.indexOf("@");  
 password = strTemp.substring(0, len);  
 strTemp = strTemp.substring(len + 1);  
 host = "";  
 len = strTemp.indexOf(":");  
 if (len < 0)//没有设置端口  
 {  
 port = "21";  
 len = strTemp.indexOf("/");  
 if (len > -1) {  
 host = strTemp.substring(0, len);  
 strTemp = strTemp.substring(len + 1);  
 } else {  
 strTemp = "";  
 }  
 } else {  
 host = strTemp.substring(0, len);  
 strTemp = strTemp.substring(len + 1);  
 len = strTemp.indexOf("/");  
 if (len > -1) {  
 port = strTemp.substring(0, len);  
 strTemp = strTemp.substring(len + 1);  
 } else {  
 port = "21";  
 strTemp = "";  
 }  
 }  
 romateDir = strTemp;  
 ftp = new FTPClient();  
 ftp.connect(host, FormatStringToInt(port));  
 
}  
 
public FtpTool(String host, int port) throws IOException {  
 ftp = new FTPClient();  
 ftp.connect(host, port);  
 }  
 
public String login(String username, String password) throws IOException {  
 this.ftp.login(username, password);  
 return this.ftp.getReplyString();  
 }  
 
public String login() throws IOException {  
 this.ftp.login(userName, password);  
 System.out.println("ftp用户: " + userName);  
 System.out.println("ftp密码: " + password);  
 if (!romateDir.equals(""))  
 System.out.println("cd " + romateDir);  
 ftp.changeWorkingDirectory(romateDir);  
 return this.ftp.getReplyString();  
 }  
 
public boolean upload(String pathname, String filename) throws IOException, BusinessException {  
 
int reply;  
 int j;  
 String m_sfilename = null;  
 filename = CheckNullString(filename);  
 if (filename.equals(""))  
 return false;  
 reply = ftp.getReplyCode();  
 if (!FTPReply.isPositiveCompletion(reply)) {  
 ftp.disconnect();  
 System.out.println("FTP server refused connection.");  
 System.exit(1);  
 }  
 FileInputStream is = null;  
 try {  
 File file_in;  
 if (pathname.endsWith(File.separator)) {  
 file_in = new File(pathname + filename);  
 } else {  
 file_in = new File(pathname + File.separator + filename);  
 }  
 if (file_in.length() == 0) {  
 System.out.println("上传文件为空!");  
 return false;  
 }   
   //产生随机数最大到99   
   j = (int)(Math.random()*100);  
   m_sfilename = String.valueOf(j) + ".pdf"; // 生成的文件名  
 is = new FileInputStream(file_in);  
 ftp.setFileType(FTP.BINARY_FILE_TYPE);  
 ftp.storeFile(m_sfilename, is);  
 ftp.logout();  
 
} finally {  
 if (is != null) {  
 is.close();  
 }  
 }  
 System.out.println("上传文件成功!");  
 return true;  
 }  
 
public boolean delete(String filename) throws IOException {  
 
FileInputStream is = null;  
 boolean retValue = false;  
 try {  
 retValue = ftp.deleteFile(filename);  
 ftp.logout();  
 } finally {  
 if (is != null) {  
 is.close();  
 }  
 }  
 return retValue;  
 
}  
 
public void close() {  
 if (ftp.isConnected()) {  
 try {  
 ftp.disconnect();  
 } catch (IOException e) {  
 e.printStackTrace();  
 }  
 }  
 }  
 
public static int FormatStringToInt(String p_String) {  
 int intRe = 0;  
 if (p_String != null) {  
 if (!p_String.trim().equals("")) {  
 try {  
 intRe = Integer.parseInt(p_String);  
 } catch (Exception ex) {  
 
}  
 }  
 }  
 return intRe;  
 }  
 
public static String CheckNullString(String p_String) {  
 if (p_String == null)  
 return "";  
 else  
 return p_String;  
 }  
 
public boolean downfile(String pathname, String filename) {  
 
String outputFileName = null;  
 boolean retValue = false;  
 try {  
 FTPFile files[] = ftp.listFiles();  
 int reply = ftp.getReplyCode();  
 
////////////////////////////////////////////////  
 if (!FTPReply.isPositiveCompletion(reply)) {  
 try {  
 throw new Exception("Unable to get list of files to dowload.");  
 } catch (Exception e) {  
 // TODO Auto-generated catch block  
 e.printStackTrace();  
 }  
 }  
 
/////////////////////////////////////////////////////  
 if (files.length == 0) {  
 System.out.println("No files are available for download.");  
 }else {  
 for (int i=0; i <>
 System.out.println("Downloading file "+files[i].getName()+"Size:"+files[i].getSize());  
 outputFileName = pathname + filename + ".pdf";  
 //return outputFileName;  
 File f = new File(outputFileName);  
 
//////////////////////////////////////////////////////  
 retValue = ftp.retrieveFile(outputFileName, new FileOutputStream(f));  
 
if (!retValue) {  
 try {  
 throw new Exception ("Downloading of remote file"+files[i].getName()+" failed. ftp.retrieveFile() returned false.");  
 } catch (Exception e) {  
 // TODO Auto-generated catch block  
 e.printStackTrace();  
 }  
 }  
 
}  
 }  
 
/////////////////////////////////////////////////////////////  
 } catch (IOException e) {  
 // TODO Auto-generated catch block  
 e.printStackTrace();  
 }  
 return retValue;  
 }  
 
}  
 试试这个 

解决方案2:

如果你需要的使用同一个用户sa,需要在服务器端设置alias,
即首先共享E:/download给sa,然后给E:/download设置alias比如d:/testFTP/download
在filezilla里设置alias必须用完整路径,其他的ftp server不知道
这样设置好后(如果d:/testFTP是根目录)你的指向E:/download的 url就是ftp://sa:sa@[ip]/download


以上介绍了“ JAVA 如何实现FTP远程路径”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2904110.html

相关图片

相关文章