JDK1.7以上javaFTP上传删除文件

时间:2021-11-30 15:17:56
packagecom.itv.launcher.util; importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.net.InetSocketAddress;importjava.util.Properties;importjava.util.StringTokenizer; importsun.net.TelnetOutputStream;importsun.net.ftp.FtpClient;importsun.net.ftp.FtpProtocolException; /** * FTP上传工具类 * * @author yanzhou * @version v1.0 */publicclass
FTPUtil {
     privatestatic
FtpClient ftpClient =
null;
    privatestatic
final
String url;
    privatestatic
final
int port;
    privatestatic
final
String user;
    privatestatic
final
String password;
    privatestatic
final
String remoteFilePath;
     static{        Properties FTPPro = ReadFTPProperties.getMsgFromPro();        url = FTPPro.getProperty("FTP_URL");        port = Integer.parseInt(FTPPro.getProperty("FTP_PORT"));        user = FTPPro.getProperty("FTP_USER");        password = FTPPro.getProperty("FTP_PASSWORD");        remoteFilePath = FTPPro.getProperty("FTP_REMOTE_FILEPATH");     }     /**     * 链接FTP     * @throws FtpProtocolException      */    privatestatic
void
connectFTP() throwsFtpProtocolException {
        try{            ftpClient = FtpClient.create();            ftpClient.connect(newInetSocketAddress(url, port));            ftpClient.login(user, password.toCharArray());            ftpClient.setBinaryType();            if(!"".equals(remoteFilePath) && remoteFilePath != null) {                ftpClient.changeDirectory(remoteFilePath);            }        }catch(IOException e) {            e.printStackTrace();        }    }     /**     * 关闭FTP链接     */    publicstatic
void
closeFTP() {
        try{            if(ftpClient != null) {                ftpClient.close();            }        }catch(IOException e) {            e.printStackTrace();        }    }     /**     * 上传文件到FTP     * @param file file文件,struts2从页面得到的File类型     * @param filePath 要保存在FTP上的路径(文件夹)     * @param fileName 文件名(test001.jpg)     * @return 文件是否上传成功     * @throws Exception     */    publicstatic
boolean
upload(File file, String filePath, String fileName) {
        TelnetOutputStream to = null;        FileInputStream fi = null;        filePath = remoteFilePath + Constants.FILE_SEPARATOR + filePath;        try{            if(file != null) {                connectFTP();                if(!isDirExist(filePath.replace("\\","/"))) {                    createDir(filePath.replace("\\","/"));                    ftpClient.changeDirectory(filePath.replace("\\","/"));                }                fi = newFileInputStream(file);                to = (TelnetOutputStream) ftpClient.putFileStream(fileName, true);                byte[] bytes = newbyte[1024];                inti = fi.read(bytes);                while(i != -1) {                    to.write(bytes);                    i = fi.read(bytes);                }            }            returntrue;        }catch(FileNotFoundException e1) {            returnfalse;        }catch(IOException e2) {            returnfalse;        }catch(Exception e) {            returnfalse;        }finally{            if(fi != null) {                try{                    fi.close();                }catch(IOException e) {                    e.printStackTrace();                }            }            if(to != null) {                try{                    to.flush();                    to.close();                }catch(IOException e) {                    e.printStackTrace();                }            }            closeFTP();        }    }     /**     * 删除FTP制定目录下的文件     * @param filePath 文件在FTP存储的路径     * @param fileName 要删除的文件名称     * @return 是否删除成功     */    publicstatic
boolean
deleteFileFtp(String filePath, String fileName){ 
        try{            connectFTP();            filePath = remoteFilePath + Constants.FILE_SEPARATOR + filePath + Constants.FILE_SEPARATOR;            if(!isDirExist(filePath.replace("\\","/"))) {                returnfalse;            }            ftpClient.changeDirectory(filePath.replace("\\","/"));            ftpClient.deleteFile(fileName);            returntrue;        }catch(Exception e) {            e.printStackTrace();            returnfalse;        }finally{            closeFTP();        }    }    /**     * 检查文件夹是否存在     *     * @param dir     * @param ftpClient     * @return     */    privatestatic
Boolean isDirExist(String dir) {
        try{            ftpClient.changeDirectory(dir);        }catch(Exception e) {            returnfalse;        }        returntrue;    }     /**     * 创建文件夹     *     * @param dir     * @param ftpClient     * @throws Exception     */    privatestatic
void
createDir(String dir) throwsException {
        ftpClient.setAsciiType();        StringTokenizer s = newStringTokenizer(dir,"/");// sign        s.countTokens();        String pathName = "";        while(s.hasMoreElements()) {            pathName = pathName + "/"+ (String) s.nextElement();            try{                ftpClient.makeDirectory(pathName);            }catch(Exception e) {                e = null;            }        }        ftpClient.setBinaryType();     } }

2. [代码]常量类,系统的路径分隔符     

?
1234567 packagecom.itv.launcher.util; publicinterface
Constants {
         //路径分隔符    publicstatic
String FILE_SEPARATOR = System.getProperty(
"file.separator");
}

3. [代码]FTP链接的配置properties文件,包括用户名密码一些信息     

?
12345678910 #FTP的IP地址FTP_URL=127.0.0.1#FTP端口号FTP_PORT=1234#用户名FTP_USER=yanzhou#密码FTP_PASSWORD=abcdefg12345#FTP账号目录FTP_REMOTE_FILEPATH=