當前位置:編程學習大全網 - 編程語言 - JAVA 如何實現FTP遠程路徑

JAVA 如何實現FTP遠程路徑

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 <files.length; 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;

}

}

  • 上一篇:網絡工程師面試問題!
  • 下一篇:車切削不銹鋼壹般使用什麽材質的數控刀片
  • copyright 2024編程學習大全網