首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

FTPClient 创建远程文件并向文件里写内容!解决思路

2012-01-22 
FTPClient 创建远程文件并向文件里写内容!!!核心代码:for (int i 0 i list.size() i++) {RemoteDirB

FTPClient 创建远程文件并向文件里写内容!!!
核心代码:
for (int i = 0; i < list.size(); i++) {

RemoteDirBean dirbean = (RemoteDirBean) list.get(i);
String dirs = dirbean.getFirstdir() + "/"
+ dirbean.getSeconddir() + "/" + dirbean.getThirddir();
/**
* 向远程服务器写文件
*/
if(ftpClient.changeWorkingDirectory(dirs)){

  System.out.println(ftpClient.printWorkingDirectory());
OutputStreamWriter out = new OutputStreamWriter(ftpClient
.appendFileStream("java" + i + ".txt"));
BufferedWriter pw = new BufferedWriter(out);
pw.write(" this is a test ");
pw.flush();
pw.close();
  }else{

  logger.info("更改目录失败!");
}

}
写第一个文件时没问题,但是循环第二次的时候,就打出“更改目录失败”,ftpClient.changeWorkingDirectory(dirs)成false了,这是怎么回事?

[解决办法]
ftpClient.changeWorkingDirectory(dirs)的返回BOOLEAN是不是表示是否成功切换到dirs目录?
如果是的话,那dirs可能不正确.


[解决办法]
菜鸟来帮您看看哇 随便帮您顶顶 我没有用过的 我去查查看哇 
随便学习额
[解决办法]
是不是当指向了当前的目录的时候 你再用 changeWorkingDirectory();的时候 他就成false了
我感觉如果LZ的其他代码写得对的话 应该只有这个问题哇

Change the current working directory of the FTP session. 

Returns:
True if successfully completed, false if not. 

要不LZ多帖点代码 然后一起看看额?
[解决办法]
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; 



热点排行