ftpUtil写法,记录一下

Posted wangquanyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ftpUtil写法,记录一下相关的知识,希望对你有一定的参考价值。

这个写法我试过可以用,项目中用到的,记录一下。

代码:

  1 import org.apache.commons.net.ftp.FTPClient;
  2 import org.apache.commons.net.ftp.FTPFile;
  3 import org.apache.commons.net.ftp.FTPReply;
  4 
  5 import java.io.*;
  6 import java.net.MalformedURLException;
  7 
  8 public class FtpUtils 
  9         //ftp服务器地址
 10         public String hostname = "192.168.1.249";
 11         //ftp服务器端口号默认为21
 12         public Integer port = 21 ;
 13         //ftp登录账号
 14         public String username = "root";
 15         //ftp登录密码
 16         public String password = "123";
 17         
 18         public FTPClient ftpClient = null;
 19         
 20         /**
 21          * 初始化ftp服务器
 22          */
 23         public void initFtpClient() 
 24             ftpClient = new FTPClient();
 25             ftpClient.setControlEncoding("utf-8");
 26             try 
 27                 System.out.println("connecting...ftp服务器:"+this.hostname+":"+this.port); 
 28                 ftpClient.connect(hostname, port); //连接ftp服务器
 29                 ftpClient.login(username, password); //登录ftp服务器
 30                 int replyCode = ftpClient.getReplyCode(); //是否成功登录服务器
 31                 if(!FTPReply.isPositiveCompletion(replyCode))
 32                     System.out.println("connect failed...ftp服务器:"+this.hostname+":"+this.port); 
 33                 
 34                 System.out.println("connect successfu...ftp服务器:"+this.hostname+":"+this.port); 
 35             catch (MalformedURLException e) 
 36                e.printStackTrace(); 
 37             catch (IOException e) 
 38                e.printStackTrace(); 
 39              
 40         
 41 
 42         /**
 43         * 上传文件
 44         * @param pathname ftp服务保存地址
 45         * @param fileName 上传到ftp的文件名
 46         *  @param originfilename 待上传文件的名称(绝对地址) * 
 47         * @return
 48         */
 49         public boolean uploadFile( String pathname, String fileName,String originfilename)
 50             boolean flag = false;
 51             InputStream inputStream = null;
 52             try
 53                 System.out.println("开始上传文件");
 54                 inputStream = new FileInputStream(new File(originfilename));
 55                 initFtpClient();
 56                 ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
 57                 CreateDirecroty(pathname);
 58                 ftpClient.makeDirectory(pathname);
 59                 ftpClient.changeWorkingDirectory(pathname);
 60                 ftpClient.storeFile(fileName, inputStream);
 61                 inputStream.close();
 62                 ftpClient.logout();
 63                 flag = true;
 64                 System.out.println("上传文件成功");
 65             catch (Exception e) 
 66                 System.out.println("上传文件失败");
 67                 e.printStackTrace();
 68             finally
 69                 if(ftpClient.isConnected()) 
 70                     try
 71                         ftpClient.disconnect();
 72                     catch(IOException e)
 73                         e.printStackTrace();
 74                     
 75                  
 76                 if(null != inputStream)
 77                     try 
 78                         inputStream.close();
 79                      catch (IOException e) 
 80                         e.printStackTrace();
 81                      
 82                  
 83             
 84             return true;
 85         
 86         /**
 87          * 上传文件
 88          * @param pathname ftp服务保存地址
 89          * @param fileName 上传到ftp的文件名
 90          * @param inputStream 输入文件流 
 91          * @return
 92          */
 93         public boolean uploadFile( String pathname, String fileName,InputStream inputStream)
 94             boolean flag = false;
 95             try
 96                 System.out.println("开始上传文件");
 97                 initFtpClient();
 98                 ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
 99                 CreateDirecroty(pathname);
100                 ftpClient.makeDirectory(pathname);
101                 ftpClient.changeWorkingDirectory(pathname);
102                 ftpClient.storeFile(fileName, inputStream);
103                 inputStream.close();
104                 ftpClient.logout();
105                 flag = true;
106                 System.out.println("上传文件成功");
107             catch (Exception e) 
108                 System.out.println("上传文件失败");
109                 e.printStackTrace();
110             finally
111                 if(ftpClient.isConnected()) 
112                     try
113                         ftpClient.disconnect();
114                     catch(IOException e)
115                         e.printStackTrace();
116                     
117                  
118                 if(null != inputStream)
119                     try 
120                         inputStream.close();
121                      catch (IOException e) 
122                         e.printStackTrace();
123                      
124                  
125             
126             return true;
127         
128         //改变目录路径
129          public boolean changeWorkingDirectory(String directory) 
130                 boolean flag = true;
131                 try 
132                     flag = ftpClient.changeWorkingDirectory(directory);
133                     if (flag) 
134                       System.out.println("进入文件夹" + directory + " 成功!");
135 
136                      else 
137                         System.out.println("进入文件夹" + directory + " 失败!开始创建文件夹");
138                     
139                  catch (IOException ioe) 
140                     ioe.printStackTrace();
141                 
142                 return flag;
143             
144 
145         //创建多层目录文件,如果有ftp服务器已存在该文件,则不创建,如果无,则创建
146         public boolean CreateDirecroty(String remote) throws IOException 
147             boolean success = true;
148             String directory = remote + "/";
149             // 如果远程目录不存在,则递归创建远程服务器目录
150             if (!directory.equalsIgnoreCase("/") && !changeWorkingDirectory(new String(directory))) 
151                 int start = 0;
152                 int end = 0;
153                 if (directory.startsWith("/")) 
154                     start = 1;
155                  else 
156                     start = 0;
157                 
158                 end = directory.indexOf("/", start);
159                 String path = "";
160                 String paths = "";
161                 while (true) 
162                     String subDirectory = new String(remote.substring(start, end).getBytes("GBK"), "iso-8859-1");
163                     path = path + "/" + subDirectory;
164                     if (!existFile(path)) 
165                         if (makeDirectory(subDirectory)) 
166                             changeWorkingDirectory(subDirectory);
167                          else 
168                             System.out.println("创建目录[" + subDirectory + "]失败");
169                             changeWorkingDirectory(subDirectory);
170                         
171                      else 
172                         changeWorkingDirectory(subDirectory);
173                     
174 
175                     paths = paths + "/" + subDirectory;
176                     start = end + 1;
177                     end = directory.indexOf("/", start);
178                     // 检查所有目录是否创建完毕
179                     if (end <= start) 
180                         break;
181                     
182                 
183             
184             return success;
185         
186 
187       //判断ftp服务器文件是否存在    
188         public boolean existFile(String path) throws IOException 
189                 boolean flag = false;
190                 FTPFile[] ftpFileArr = ftpClient.listFiles(path);
191                 if (ftpFileArr.length > 0) 
192                     flag = true;
193                 
194                 return flag;
195             
196         //创建目录
197         public boolean makeDirectory(String dir) 
198             boolean flag = true;
199             try 
200                 flag = ftpClient.makeDirectory(dir);
201                 if (flag) 
202                     System.out.println("创建文件夹" + dir + " 成功!");
203 
204                  else 
205                     System.out.println("创建文件夹" + dir + " 失败!");
206                 
207              catch (Exception e) 
208                 e.printStackTrace();
209             
210             return flag;
211         
212         
213         /** * 下载文件 * 
214         * @param pathname FTP服务器文件目录 * 
215         * @param filename 文件名称 * 
216         * @param localpath 下载后的文件路径 * 
217         * @return */
218         public  boolean downloadFile(String pathname, String filename, String localpath) 
219             boolean flag = false; 
220             OutputStream os=null;
221             try  
222                 System.out.println("开始下载文件");
223                 initFtpClient();
224                 //切换FTP目录 
225                 ftpClient.changeWorkingDirectory(pathname); 
226                 FTPFile[] ftpFiles = ftpClient.listFiles(); 
227                 for(FTPFile file : ftpFiles) 
228                     if(filename.equalsIgnoreCase(file.getName())) 
229                         File localFile = new File(localpath + "/" + file.getName()); 
230                         os = new FileOutputStream(localFile);
231                         ftpClient.retrieveFile(file.getName(), os); 
232                         os.close(); 
233                      
234                  
235                 ftpClient.logout(); 
236                 flag = true; 
237                 System.out.println("下载文件成功");
238              catch (Exception e)  
239                 System.out.println("下载文件失败");
240                 e.printStackTrace(); 
241              finally 
242                 if(ftpClient.isConnected()) 
243                     try
244                         ftpClient.disconnect();
245                     catch(IOException e)
246                         e.printStackTrace();
247                     
248                  
249                 if(null != os)
250                     try 
251                         os.close();
252                      catch (IOException e) 
253                         e.printStackTrace();
254                      
255                  
256              
257             return flag; 
258         
259         
260         /** * 删除文件 * 
261         * @param pathname FTP服务器保存目录 * 
262         * @param filename 要删除的文件名称 * 
263         * @return */ 
264         public boolean deleteFile(String pathname, String filename) 
265             boolean flag = false; 
266             try  
267                 System.out.println("开始删除文件");
268                 initFtpClient();
269                 //切换FTP目录 
270                 ftpClient.changeWorkingDirectory(pathname); 
271                 ftpClient.dele(filename); 
272                 ftpClient.logout();
273                 flag = true; 
274                 System.out.println("删除文件成功");
275              catch (Exception e)  
276                 System.out.println("删除文件失败");
277                 e.printStackTrace(); 
278              finally 
279                 if(ftpClient.isConnected()) 
280                     try
281                         ftpClient.disconnect();
282                     catch(IOException e)
283                         e.printStackTrace();
284                     
285                  
286             
287             return flag; 
288         
289         
290         public static void main(String[] args) 
291             FtpUtils ftp =new FtpUtils(); 
292             //ftp.uploadFile("ftpFile/data", "123.docx", "E://123.docx");
293             //ftp.downloadFile("ftpFile/data", "123.docx", "F://");
294             ftp.deleteFile("ftpFile/data", "123.docx");
295             System.out.println("ok");
296         
297 

 

以上是关于ftpUtil写法,记录一下的主要内容,如果未能解决你的问题,请参考以下文章

MarkDown的写法

delete删除所有记录类的写法

JAVA记录-web系统异步传递路径写法

PHP 批量修改多条记录的Sql语句写法

python ftputil演示

FtpUtil.java测试 (淘淘商城第三课文件上传)