1、FTP文件的上传下载package com.why.ftp; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import .T
2、elnetInputStream; import .TelnetOutputStream; import .ftp.FtpClient; /* * ftp上传,下载 * author why 2009-07-30 * */ public class FtpUtil private String ip = ; private String username = ; private String password = ; private int port = -1; private String path = ; FtpClient ftpClient = null; OutputStream o
3、s = null; FileInputStream is = null; public FtpUtil(String serverIP, String username, String password) this.ip = serverIP; this.username = username; this.password = password; public FtpUtil(String serverIP, int port, String username, String password) this.ip = serverIP; this.username = username; thi
4、s.password = password; this.port = port; /* * 连接ftp服务器 * * throws IOException */ public boolean connectServer() ftpClient = new FtpClient(); try if(this.port != -1) ftpClient.openServer(this.ip,this.port); else ftpClient.openServer(this.ip); ftpClient.login(this.username, this.password); if (this.pa
5、th.length() != 0) ftpClient.cd(this.path);/ path是ftp服务下主目录的子目录 ftpClient.binary();/ 用2进制上传、下载 System.out.println(已登录到 + ftpClient.pwd() + 目录); return true; catch (IOException e) e.printStackTrace(); return false; /* * 断开与ftp服务器连接 * * throws IOException */ public boolean closeServer() try if (is != n
6、ull) is.close(); if (os != null) os.close(); if (ftpClient != null) ftpClient.closeServer(); System.out.println(已从服务器断开); return true; catch(IOException e) e.printStackTrace(); return false; /* * 检查文件夹在当前目录下是否存在 * param dir * return */ private boolean isDirExist(String dir) String pwd = ; try pwd =
7、ftpClient.pwd(); ftpClient.cd(dir); ftpClient.cd(pwd); catch(Exception e) return false; return true; /* * 在当前目录下创建文件夹 * param dir * return * throws Exception */ private boolean createDir(String dir) try ftpClient.ascii(); StringTokenizer s = new StringTokenizer(dir, /); /sign s.countTokens(); String
8、 pathName = ftpClient.pwd(); while(s.hasMoreElements() pathName = pathName + / + (String) s.nextElement(); try ftpClient.sendServer(MKD + pathName + rn); catch (Exception e) e = null; return false; ftpClient.readServerResponse(); ftpClient.binary(); return true; catch (IOException e1) e1.printStackT
9、race(); return false; /* * ftp上传 * 如果服务器段已存在名为filename的文件夹,该文件夹中与要上传的文件夹中同名的文件将被替换 * * param filename 要上传的文件(或文件夹)名 * return * throws Exception */ public boolean upload(String filename) String newname = ; if(filename.indexOf(/) -1) newname = filename.substring(filename.lastIndexOf(/) + 1); else newn
10、ame = filename; return upload(filename, newname); /* * ftp上传 * 如果服务器段已存在名为newName的文件夹,该文件夹中与要上传的文件夹中同名的文件将被替换 * * param fileName 要上传的文件(或文件夹)名 * param newName 服务器段要生成的文件(或文件夹)名 * return */ public boolean upload(String fileName, String newName) try String savefilename = new String(fileName.getBytes(I
11、SO-8859-1), GBK); File file_in = new File(savefilename);/打开本地待长传的文件 if(!file_in.exists() throw new Exception(此文件或文件夹 + file_in.getName() + 有误或不存在!); if(file_in.isDirectory() upload(file_in.getPath(),newName,ftpClient.pwd(); else uploadFile(file_in.getPath(),newName); if(is != null) is.close(); if(os
12、 != null) os.close(); return true; catch(Exception e) e.printStackTrace(); System.err.println(Exception e in Ftp upload(): + e.toString(); return false; finally try if(is != null) is.close(); if(os != null) os.close(); catch(IOException e) e.printStackTrace(); /* * 真正用于上传的方法 * param fileName * param
13、 newName * param path * throws Exception */ private void upload(String fileName, String newName,String path) throws Exception String savefilename = new String(fileName.getBytes(ISO-8859-1), GBK); File file_in = new File(savefilename);/打开本地待长传的文件 if(!file_in.exists() throw new Exception(此文件或文件夹 + fil
14、e_in.getName() + 有误或不存在!); if(file_in.isDirectory() if(!isDirExist(newName) createDir(newName); ftpClient.cd(newName); File sourceFile = file_in.listFiles(); for(int i = 0; i =0 成功上传,返回文件的大小 * throws Exception */ public long uploadFile(String filename, String newname) throws Exception long result =
15、0; TelnetOutputStream os = null; FileInputStream is = null; try java.io.File file_in = new java.io.File(filename); if(!file_in.exists() return -1; os = ftpClient.put(newname); result = file_in.length(); is = new FileInputStream(file_in); byte bytes = new byte1024; int c; while(c = is.read(bytes) != -1) os.write(bytes, 0, c); finally if(is != null) is.close(); if(os != null) os.close(); return result; /* * 从ftp下载文件到本地 * * param filename 服务器上的文件名 * param newfilename 本地生成的文件名 * return * throws Exception */ public long downloadFile(String filen
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1