怎么获取ftp的路径,第1张

  问一下,你是想做ftp上传下载么?

首先你需要安装一个ftp服务端程序,启动起来,然后下载一个ftp客户端程序,测试能不能连接,首先这一块儿需要测试通过。

代码ftp上传下载

  21 上传代码:

  import javaioFile;

  import javaioFileInputStream;

  import orgapachecommonsnetftpFTPClient;

  import orgapachecommonsnetftpFTPReply;

  public class test {

  private FTPClient ftp;

  /

  

   @param path 上传到ftp服务器哪个路径

   @param addr 地址

   @param port 端口号

   @param username 用户名

   @param password 密码

   @return

   @throws Exception

  /

  private boolean connect(String path,String addr,int port,String username,String password) throws Exception {

  boolean result = false;

  ftp = new FTPClient();

  int reply;

  ftpconnect(addr,port);

  ftplogin(username,password);

  ftpsetFileType(FTPClientBINARY_FILE_TYPE);

  reply = ftpgetReplyCode();

  if (!FTPReplyisPositiveCompletion(reply)) {

  ftpdisconnect();

  return result;

  }

  ftpchangeWorkingDirectory(path);

  result = true;

  return result;

  }

  /

  

   @param file 上传的文件或文件夹

   @throws Exception

  /

  private void upload(File file) throws Exception{

  if(fileisDirectory()){

  ftpmakeDirectory(filegetName());

  ftpchangeWorkingDirectory(filegetName());

  String[] files = filelist();

  for (int i = 0; i < fileslength; i++) {

  File file1 = new File(filegetPath()+"\\"+files[i] );

  if(file1isDirectory()){

  upload(file1);

  ftpchangeToParentDirectory();

  }else{

  File file2 = new File(filegetPath()+"\\"+files[i]);

  FileInputStream input = new FileInputStream(file2);

  ftpstoreFile(file2getName(), input);

  inputclose();

  }

  }

  }else{

  File file2 = new File(filegetPath());

  FileInputStream input = new FileInputStream(file2);

  ftpstoreFile(file2getName(), input);

  inputclose();

  }

  }

  public static void main(String[] args) throws Exception{

  test t = new test();

  tconnect("", "localhost", 21, "yhh", "yhhazr");

  File file = new File("e:\\uploadify");

  tupload(file);

  }

  }

  22 下载代码

  这里没有用到filter,如果用filter就可以过滤想要的文件。

  public class Ftp {

/

@param args

/

public static void main(String[] args) {

// TODO Auto-generated method stub

Ftp ftp = new Ftp();

String hostname = "wwwstrawberrycom";

Integer port = 21;

String username = "username";

String password = "password";

String remote = "/ctxt";

String local = "/home/tin/LeonChen/FTP/";

try {

ftpconnect(hostname, port, username, password);

Systemoutprintln("接收状态:"+ftpdownload(remote, local));

ftpdisconnect();

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

private FTPClient ftpClient = new FTPClient();

/

连接到FTP服务器

@param hostname 主机名

@param port 端口

@param username 用户名

@param password 密码

@return 是否连接成功

@throws IOException

/

private boolean connect(String hostname, int port, String username,

String password) throws IOException {

ftpClientconnect(hostname, port);

ftpClientsetControlEncoding("UTF-8");

if (FTPReplyisPositiveCompletion(ftpClientgetReplyCode())) {

if (ftpClientlogin(username, password)) {

return true;

}

}

disconnect();

return false;

}

/

从FTP服务器上下载文件,支持断点续传,上传百分比汇报

@param remote 远程文件路径

@param local 本地文件路径

@return 上传的状态

@throws IOException

/

public DownloadStatus download(String remote, String local)

throws IOException {

// 设置被动模式

ftpCliententerLocalPassiveMode();

// 设置以二进制方式传输

ftpClientsetFileType(FTPBINARY_FILE_TYPE);

DownloadStatus result;

// 检查远程文件是否存在

FTPFile[] files = ftpClientlistFiles(new String(remote

getBytes("UTF-8"), "iso-8859-1"));

if (fileslength != 1) {

Systemoutprintln("远程文件不存在");

return DownloadStatusRemote_File_Noexist;

}

long lRemoteSize = files[0]getSize();

String fildName = files[0]getName();

// 本地存在文件,进行断点下载

File f = new File(local+fildName);

if (fexists()) {

long localSize = flength();

if (localSize >= lRemoteSize) {

Systemoutprintln("本地文件大于远程文件,下载中止");

return DownloadStatusLocal_Bigger_Remote;

}

// 进行断点续传,并记录状态

FileOutputStream out = new FileOutputStream(f, true);

ftpClientsetRestartOffset(localSize);

InputStream in = ftpClientretrieveFileStream(new String(remotegetBytes("UTF-8"), "iso-8859-1"));

byte[] bytes = new byte[1024];

long step = lRemoteSize / 100;

long process = localSize / step;

int c;

while ((c = inread(bytes)) != -1) {

outwrite(bytes, 0, c);

localSize += c;

long nowProcess = localSize / step;

if (nowProcess > process) {

process = nowProcess;

if (process % 10 == 0)

Systemoutprintln("下载进度:" + process);

// TODO 更新文件下载进度,值存放在process变量中

}

}

inclose();

outclose();

boolean isDo = ftpClientcompletePendingCommand();

if (isDo) {

result = DownloadStatusDownload_From_Break_Success;

} else {

result = DownloadStatusDownload_From_Break_Failed;

}

} else {

OutputStream out = new FileOutputStream(f);

InputStream in = ftpClientretrieveFileStream(new String(remotegetBytes("UTF-8"), "iso-8859-1"));

byte[] bytes = new byte[1024];

long step = lRemoteSize / 100;

long process = 0;

long localSize = 0L;

int c;

while ((c = inread(bytes)) != -1) {

outwrite(bytes, 0, c);

localSize += c;

long nowProcess = localSize / step;

if (nowProcess > process) {

process = nowProcess;

if (process % 10 == 0)

Systemoutprintln("下载进度:" + process);

// TODO 更新文件下载进度,值存放在process变量中

}

}

inclose();

outclose();

boolean upNewStatus = ftpClientcompletePendingCommand();

if (upNewStatus) {

result = DownloadStatusDownload_New_Success;

} else {

result = DownloadStatusDownload_New_Failed;

}

}

return result;

}

private void disconnect() throws IOException {

if (ftpClientisConnected()) {

ftpClientdisconnect();

}

}

}

在java中获得文件的路径在我们做上传文件操作时是不可避免的。 web 上运行 1:thisgetClass()getClassLoader()getResource("/")getPath(); thisgetClass()getClassLoader()getResource("")getPath(); 得到的是 ClassPath的绝对URI路径。

以工程名为TEST为例:

(1)得到包含工程名的当前页面全路径:requestgetRequestURI(),结果:/TEST/testjsp。

(2)得到工程名:requestgetContextPath(),结果:/TEST。

(3)得到当前页面所在目录下全名称:requestgetServletPath()。结果:如果页面在jsp目录下 /TEST/jsp/testjsp。

(4)得到页面所在服务器的全路径:applicationgetRealPath("页面jsp"),结果D:/resin/webapps/TEST/testjsp。

(5)得到页面所在服务器的绝对路径:absPath=new javaioFile(applicationgetRealPath(requestgetRequestURI()))getParent();

结果:D:/resin/webapps/TEST。

拓展:在类中取得路径的方法

(1)类的绝对路径:String u=ClassclassgetClass()getResource("/")getPath()

结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/

(2)得到工程的路径:SystemgetProperty("userdir")

结果:D:/TEST

如果没有记错的话,在servlet中

getServletContext()getContextPath()

如果在jsp中

${pageContextservletContextcontextPath}

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 怎么获取ftp的路径

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情