java使用ftp上传文件示例分享
2023-06-13 09:15:17 时间
importjava.io.ByteArrayInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.net.SocketException;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importorg.apache.commons.io.IOUtils;
importorg.apache.commons.net.ftp.FTPClient;
/**
*classname:FTPFileTransmit<BR>
*classdescription:pleasewriteyourdescription<BR>
*Remark:<BR>
*@version1.002011-8-9
*/
publicclassFTPFileTransmit{
privateStringftpPath;
privateStringftpName;
privateStringftpPassword;
privateStringftpServerIP;
publicFTPFileTransmit(){
this.ftpPath="xxx/xxx/";
this.ftpName="name";
this.ftpPassword="pass";
this.ftpServerIP="192.168.0.xx";
}
/**
*Methodname:saveInFTP<BR>
*Description:把文件存储在FTP上<BR>
*Remark:<BR>
*@paramFolderName 示例"xxx/xxx/"
*@paramFileName 示例"thefilename"
*@paramdata byte[]数组
*@return boolean<BR>
*/
publicbooleansaveInFTP(StringFolderName,StringFileName,byte[]data){
booleanflag=false;
//创建FTP客户端
FTPClientftpClient=newFTPClient();
//输入流用于读取文件
// FileInputStreamfis=null;
ByteArrayInputStreambis=null;
try{
//如果FolderName和FileName都不符合基本要求,那么就没有必要进行ftp操作
if(FolderName!=null
&&FolderName.compareTo("")!=0
&&FileName!=null
&&FileName.compareTo("")!=0){
//建立FTP连接
ftpClient.connect(this.ftpServerIP);
//如果登录成功后,才进行创建输入流
if(ftpClient.login(this.ftpName,this.ftpPassword)){
// FilesrcClientFile=newFile("C:/ParseXML.xml");
//实例化输入流
// fis=newFileInputStream(srcClientFile);
if(ftpClient.changeWorkingDirectory(FolderName)){
//将byte[]写入到输入流中,实例化
bis=newByteArrayInputStream(data);
//设置缓冲
ftpClient.setBufferSize(1024);
//设置文件类型(二进制类型)
if(ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)){
flag=ftpClient.storeFile(FileName,bis);
}
}
}
}
}catch(SocketExceptione){
e.printStackTrace();
flag=false;
}catch(IOExceptione){
e.printStackTrace();
flag=false;
}catch(Exceptione){
e.printStackTrace();
flag=false;
}finally{
try{
//关闭输入流
IOUtils.closeQuietly(bis);
//关闭连接
ftpClient.disconnect();
}catch(IOExceptione){
e.printStackTrace();
}
}
returnflag;
}
/**
*Methodname:getFromFTP<BR>
*Description:从FTP上读取文件<BR>
*Remark:<BR>
*@return boolean<BR>
*/
publicbooleangetFromFTP(){
booleanflag=false;
//创建FTP客户端
FTPClientftpClient=newFTPClient();
//输出流用于输出文件
FileOutputStreamfos=null;
try{
//建立FTP连接
ftpClient.connect(this.ftpServerIP);
//如果登录成功后,才进行创建输出流
if(ftpClient.login(this.ftpName,this.ftpPassword)){
//FTP文件
StringdistinationFile="/name/xxx/xxx/xxx文件";
//实例化输出流
fos=newFileOutputStream("C:/ParseXML_InFTP.xml");
//设置缓冲
ftpClient.setBufferSize(1024);
//设置文件类型(二进制类型)
if(ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)){
ftpClient.retrieveFile(distinationFile,fos);
flag=true;
}
}
}catch(SocketExceptione){
e.printStackTrace();
flag=false;
}catch(IOExceptione){
e.printStackTrace();
flag=false;
}catch(Exceptione){
e.printStackTrace();
flag=false;
}finally{
try{
//关闭输出流
IOUtils.closeQuietly(fos);
//关闭连接
ftpClient.disconnect();
}catch(IOExceptione){
e.printStackTrace();
}
}
returnflag;
}
publicbooleancreateDirectory(){
booleanflag=false;
//创建FTP客户端
FTPClientftpClient=newFTPClient();
try{
//建立FTP连接
ftpClient.connect(this.ftpServerIP);
//如果登录成功后,才进行操作
if(ftpClient.login(this.ftpName,this.ftpPassword)){
//切换文件路径,到FTP上的"NNDD3"文件夹下
if(this.ftpPath!=null&&this.ftpPath.compareTo("")!=0
&&ftpClient.changeWorkingDirectory(this.ftpPath)){
SimpleDateFormatf=newSimpleDateFormat("yyyyMMdd");
Stringtime=f.format(newDate());
StringFolderName=time+"_ReTransmit";
ftpClient.makeDirectory(FolderName);
flag=true;
}
}
}catch(SocketExceptione){
e.printStackTrace();
flag=false;
}catch(IOExceptione){
e.printStackTrace();
flag=false;
}catch(Exceptione){
e.printStackTrace();
flag=false;
}finally{
try{
//关闭连接
ftpClient.disconnect();
}catch(IOExceptione){
e.printStackTrace();
}
}
returnflag;
}
publicString[]getAllFolderNames(){
//创建FTP客户端
FTPClientftpClient=newFTPClient();
try{
//建立FTP连接
ftpClient.connect(this.ftpServerIP);
//如果登录成功后,才进行操作
if(ftpClient.login(this.ftpName,this.ftpPassword)){
//切换文件路径,到FTP上的"NNDD3"文件夹下
if(this.ftpPath!=null&&this.ftpPath.compareTo("")!=0
&&ftpClient.changeWorkingDirectory(this.ftpPath)){
//将当前时间减去2天,删除的是前两天的数据包
Stringtime=minusTime();
String[]allNames=ftpClient.listNames();
String[]temp=newString[allNames.length];
//初始化数组
for(intj=0;j<allNames.length;j++){
temp[j]="";
}
//找出要删除文件夹的名称
for(inti=0;i<allNames.length;i++){
if(allNames[i].substring(0,8).compareTo(time)<=0){
temp[i]=allNames[i];
}
}
returntemp;
}
}
}catch(SocketExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
//关闭连接
ftpClient.disconnect();
}catch(IOExceptione){
e.printStackTrace();
}
}
returnnull;
}
/**
*
*Methodname:minusTime<BR>
*Description:获取钱两天的时间,如2011-8-1的前两天就是2011-7-30<BR>
*Remark:<BR>
*@return String<BR>
*/
privateStringminusTime(){
SimpleDateFormatdf=newSimpleDateFormat("yyyyMMdd");
Dated=newDate();
StringtimeMinus2=df.format(newDate(d.getTime()-2*24*60*60*1000));
returntimeMinus2;
}
publicstaticvoidmain(String[]args){
FTPFileTransmitftpFileTransmit=newFTPFileTransmit();
ftpFileTransmit.deleteFoldersInFTP();
// booleanflag=ftpFileTransmit.createDirectory();
// if(flag){
// System.out.println("******FTP文件夹创建成功******");
// }
// StringFolderName=ftpFileTransmit.ftpPath+"20110809_ReTransmit/";
// byte[]data=newbyte[1024];
// for(inti=0;i<data.length;i++){
// data[i]="a";
// }
// booleanflag=ftpFileTransmit.saveInFTP(FolderName,"2011080912345678",data);
// if(flag){
// System.out.println("******FTP文件夹创建成功******");
// }
}
}
相关文章
- 文件上传linux文件名乱码_java导出文件名中文乱码
- java文件上传总结[通俗易懂]
- java删除文件目录及文件_Java删除文件,目录
- Java文件是如何编译成Dex文件的?如何执行Dex文件?「建议收藏」
- 做了三年Java,java注释的三种形式
- java与python-如何对比Python和Java,只需三分钟告诉你!
- java文件上传服务器路径,java文件上传服务器路径地址「建议收藏」
- java 文件上传到服务器_Java上传文件到服务器端的方法「建议收藏」
- Deep Java Library_java atomicinteger
- springboot更改项目名_java 文件重命名
- 【错误记录】记录 Android 命令行执行 Java 程序中出现的错误 ( dx 打包 PC 可执行文件报错 | dalvik 命令执行 kotlin 编译的 dex 文件报错 )
- java使用poi读取excel文件代码示例详解编程语言
- Java开发之文件上传详解编程语言
- 使用java NIO进行读文件详解编程语言
- 使用JAVA读写Properties属性文件详解编程语言
- Java操作MySQL数据库:实现看似不可能的梦想(java连接mysql数据库)
- Java 从FTP下载.上传文件详解编程语言
- Java实现FTP的文件上传详解编程语言
- Java轻松处理Redis缓存(java处理redis)
- Java程序在Linux系统中实现命令操作(java运行linux命令)
- MySQL和Java结合的必备工具MySQL下载Java(mysql下载java)
- 使用java实现http多线程断点下载文件(二)
- java使用smartupload组件实现文件上传的方法