ftp上传java代码

欢迎转载http://www.cnblogs.com/shizhongtao/p/3345826.html》

  1. 上传代码就写个简单的小例子。首先要加入jar包。commons-net-1.4.1.jar,

如果是用的maven管理jar包的话,加入如下配置:

1 <dependency>

2            <groupId>commons-net</groupId>

3            <artifactId>commons-net</artifactId>

4             <version>1.4.1</version>

5 </dependency>

 

  1. 废话不多说,这里面给出代码:
  1 package com.bing.ftpupload;

  2 

  3 import java.io.File;

  4 

  5 import java.io.FileInputStream;

  6 

  7 import java.io.IOException;

  8 

  9 import java.io.InputStream;

 10 

 11 import org.apache.commons.net.ftp.FTPClient;

 12 

 13 import org.apache.commons.net.ftp.FTPReply;

 14 

 15  

 16 

 17 public class FtpFileUpload

 18 

 19 {

 20 

 21         

 22 

 23          public static boolean uploadFile(String url,// FTP服务器hostname

 24 

 25                             int port,// FTP服务器端口

 26 

 27                             String username, // FTP登录账号

 28 

 29                             String password, // FTP登录密码

 30 

 31                             String path, // FTP服务器保存目录

 32 

 33                             String filename, // 上传到FTP服务器上的文件名

 34 

 35                             InputStream input // 输入流     )

 36 

 37          {

 38 

 39                    boolean result = false;

 40 

 41                    FTPClient ftp = new FTPClient();

 42 

 43                    // ftp.setControlEncoding("UTF-8");

 44 

 45                    ftp.setControlEncoding("UTF-8");

 46 

 47                    try

 48 

 49                    {

 50 

 51                             int reply;

 52 

 53                             ftp.connect(url, port);// 连接FTP服务器

 54 

 55                             // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器

 56 

 57                             ftp.login(username, password);// 登录

 58 

 59                             reply = ftp.getReplyCode();

 60 

 61                             if (!FTPReply.isPositiveCompletion(reply))

 62 

 63                             {

 64 

 65                                      ftp.disconnect();

 66 

 67                                      return result;

 68 

 69                             }

 70 

 71                             ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

 72 

 73                             ftp.makeDirectory(path);

 74 

 75                             ftp.changeWorkingDirectory(path);

 76 

 77                             ftp.storeFile(filename, input);

 78 

 79                             input.close();

 80 

 81                             ftp.logout();

 82 

 83                             result = true;

 84 

 85                    }

 86 

 87                    catch (IOException e)

 88 

 89                    {

 90 

 91                             e.printStackTrace();

 92 

 93                    }

 94 

 95                    finally

 96 

 97                    {

 98 

 99                             if (ftp.isConnected())

100 

101                             {

102 

103                                      try

104 

105                                      {

106 

107                                                ftp.disconnect();

108 

109                                      }

110 

111                                      catch (IOException ioe)

112 

113                                      {

114 

115                                      }

116 

117                             }

118 

119                    }

120 

121                    return result;

122 

123          }

124 

125          /**

126 

127           * 将本地文件上传到FTP服务器上 *

128 

129           */

130 

131          public static boolean upLoadFromProduction(String url,// FTP服务器hostname

132 

133                             int port,// FTP服务器端口

134 

135                             String username, // FTP登录账号

136 

137                             String password, // FTP登录密码

138 

139                             String path, // FTP服务器保存目录

140 

141                             String filename, // 上传到FTP服务器上的文件名

142 

143                             String orginfilename // 输入流文件名

144 

145          )

146 

147          {

148 

149                    try

150 

151                    {

152 

153                             FileInputStream in = new FileInputStream(new File(orginfilename));

154 

155                             boolean flag = uploadFile(url, port, username, password, path,

156 

157                                                filename, in);

158                             return flag;

159                    }

160                    catch (Exception e)

161 

162                    {

163                             e.printStackTrace();

164 

165                    }

166 

167                    return false;

168 

169          }

170 

171          /**

172 

173           * 将本地文件上传到FTP服务器上

174 

175 *这个方法和上面的方法作用一样,只是用了默认的文件名

176 

177           */

178 

179          public static boolean upLoadFromProduction(String url,// FTP服务器hostname

180                             int port,// FTP服务器端口

181                             String username, // FTP登录账号

182                             String password, // FTP登录密码

183                             String path, // FTP服务器保存目录

184                             String orginfilename // 输入流文件名

185 

186                             )

187 

188          {

189                    try

190 

191                    {

192 

193                             String filename=new File(orginfilename).getName();

194 

195                             boolean flag = upLoadFromProduction(url, port, username, password, path,

196                                                filename, orginfilename);

197                             return flag;

198                    }

199                    catch (Exception e)

200 

201                    {

202                             e.printStackTrace();

203                    }

204 

205                    return false;

206 

207          }

208 

209 }

 

对于上面代码中对应jar包的api地址:

https://commons.apache.org/proper/commons-net/javadocs/api-1.4.1/index.html

 

 

 

然后用junit测试下代码:

 1 @Test

 2 

 3     public void uploadfile()

 4 

 5     {

 6 

 7        String path="E:/updatexml/mph201392830451.xml";

 8 

 9        String url="192.168.3.57";

10 

11        int port=21;

12 

13        String username="gaea";

14 

15               String password="gaea";

16 

17        FtpFileUpload.upLoadFromProduction(url, port, username, password, "testxml", path);

18 

19     }

 在上面的代码中,你如果想灵活点控制上传目录可以稍微修改下代码:

if (path!=null)

     {
//在ftp根目录下穿件文件夹 ftp.makeDirectory(path);
//更改ftp上传的路径 ftp.changeWorkingDirectory(path); }

这样如果你的path路径为空的话,就会上传到ftp的根目录下面。

 

 

注意:url如果写作"ftp:192.168.3.57";就会报异常,具体原因没有探究过

java.net.UnknownHostException: ftp:192.168.3.57

你可能感兴趣的:(java)