当前位置:   article > 正文

通过FTP交换数据方式上传下载_ftp.getreplycode()

ftp.getreplycode()
  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.OutputStream;
  7. import java.util.ArrayList;
  8. import java.util.HashMap;
  9. import java.util.List;
  10. import java.util.Vector;
  11. import org.apache.commons.net.ftp.FTP;
  12. import org.apache.commons.net.ftp.FTPClient;
  13. import org.apache.commons.net.ftp.FTPFile;
  14. import org.apache.commons.net.ftp.FTPReply;
  15. public class FtpUtil {
  16. public static boolean uploadFile(String url,// FTP服务器hostname
  17. int port,// FTP服务器端口
  18. String username, // FTP登录账号
  19. String password, // FTP登录密码
  20. String path, // FTP服务器保存目录
  21. String filename, // 上传到FTP服务器上的文件名
  22. InputStream input // 输入流
  23. ) {
  24. boolean success = false;
  25. FTPClient ftp = new FTPClient();
  26. try {
  27. int reply;
  28. ftp.connect(url, port);// 连接FTP服务器
  29. // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
  30. ftp.login(username, password);// 登录
  31. reply = ftp.getReplyCode();
  32. if (!FTPReply.isPositiveCompletion(reply)) {
  33. ftp.disconnect();
  34. return success;
  35. }
  36. ftp.enterLocalPassiveMode();
  37. ftp.changeWorkingDirectory(path);
  38. ftp.setFileType(FTP.ASCII_FILE_TYPE);
  39. String FtpFilename = new String(filename.getBytes("GBK"),
  40. "iso-8859-1");
  41. boolean result = ftp.storeFile(FtpFilename, input);
  42. input.close();
  43. ftp.logout();
  44. success = true;
  45. } catch (IOException e) {
  46. e.printStackTrace();
  47. } finally {
  48. if (ftp.isConnected()) {
  49. try {
  50. ftp.disconnect();
  51. } catch (IOException ioe) {
  52. }
  53. }
  54. }
  55. return success;
  56. }
  57. /**
  58. * Description: 从FTP服务器下载文件
  59. *
  60. * @Version1.0
  61. * @param url
  62. * FTP服务器hostname
  63. * @param port
  64. * FTP服务器端口
  65. * @param username
  66. * FTP登录账号
  67. * @param password
  68. * FTP登录密码
  69. * @param remotePath
  70. * FTP服务器上的相对路径
  71. * @param fileName
  72. * 要下载的文件名
  73. * @param localPath
  74. * 下载后保存到本地的路径
  75. * @return
  76. */
  77. public static boolean downFile(String url, // FTP服务器
  78. int port,// FTP服务器端口
  79. String username, // FTP登录账号
  80. String password, // FTP登录密码
  81. String remotePath,// FTP服务器上的相对路径
  82. String fileName,// 要下载的文件名
  83. String localPath// 下载后保存到本地的路径
  84. ) {
  85. boolean success = false;
  86. FTPClient ftp = new FTPClient();
  87. try {
  88. int reply;
  89. ftp.connect(url, port);
  90. ftp.enterLocalPassiveMode();
  91. // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
  92. ftp.login(username, password);// 登录
  93. reply = ftp.getReplyCode();
  94. if (!FTPReply.isPositiveCompletion(reply)) {
  95. ftp.disconnect();
  96. return success;
  97. }
  98. ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录
  99. FTPFile[] fs = null;
  100. String[] names = null;
  101. if (ftp.listFiles() != null) {
  102. fs = ftp.listFiles();
  103. }
  104. if (ftp.listNames().length > 0) {
  105. names = ftp.listNames();
  106. }
  107. if (fs != null && fs.length > 0) {
  108. for (FTPFile ff : fs) {
  109. String FtpFilename = new String(ff.getName().getBytes(
  110. "iso-8859-1"), "GBK");
  111. if (FtpFilename.equals(fileName)) {
  112. File localFile = new File(localPath + "/" + FtpFilename);
  113. if (!localFile.exists()) {
  114. OutputStream is = new FileOutputStream(localFile);
  115. boolean result = ftp.retrieveFile(ff.getName(), is);
  116. is.close();
  117. }
  118. }
  119. }
  120. } else {
  121. if (names != null) {
  122. for (int i = 0, j = names.length; i < j; i++) {
  123. if (names[i].equals(fileName)) {
  124. File localFile = new File(localPath + "/"
  125. + names[i]);
  126. if (!localFile.exists()) {
  127. OutputStream is = new FileOutputStream(
  128. localFile);
  129. boolean result = ftp.retrieveFile(names[i], is);
  130. is.close();
  131. }
  132. }
  133. }
  134. } else {
  135. ftp.logout();
  136. success = true;
  137. return success;
  138. }
  139. }
  140. ftp.logout();
  141. success = true;
  142. } catch (IOException e) {
  143. e.printStackTrace();
  144. } finally {
  145. if (ftp.isConnected()) {
  146. try {
  147. ftp.disconnect();
  148. } catch (IOException ioe) {
  149. }
  150. }
  151. }
  152. return success;
  153. }
  154. /**
  155. * Description: 从FTP服务器删除文件
  156. *
  157. * @Version1.0
  158. * @param url
  159. * FTP服务器hostname
  160. * @param port
  161. * FTP服务器端口
  162. * @param username
  163. * FTP登录账号
  164. * @param password
  165. * FTP登录密码
  166. * @param remotePath
  167. * FTP服务器上的相对路径
  168. * @param fileName
  169. * 要下载的文件名
  170. * @return
  171. */
  172. public static boolean deleteFile(String url, // FTP服务器
  173. int port,// FTP服务器端口
  174. String username, // FTP登录账号
  175. String password, // FTP登录密码
  176. String remotePath,// FTP服务器上的相对路径
  177. String fileName// 要下载的文件名
  178. ) {
  179. boolean success = false;
  180. FTPClient ftp = new FTPClient();
  181. try {
  182. int reply;
  183. ftp.connect(url, port);
  184. // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
  185. ftp.enterLocalPassiveMode();
  186. ftp.login(username, password);// 登录
  187. reply = ftp.getReplyCode();
  188. if (!FTPReply.isPositiveCompletion(reply)) {
  189. ftp.disconnect();
  190. return success;
  191. }
  192. ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录
  193. FTPFile[] fs = ftp.listFiles();
  194. String[] names = ftp.listNames();
  195. if (fs != null && fs.length > 0) {
  196. for (FTPFile ff : fs) {
  197. String FtpFilename = new String(ff.getName().getBytes(
  198. "iso-8859-1"), "GBK");
  199. if (FtpFilename.equals(fileName)) {
  200. ftp.deleteFile(FtpFilename);
  201. }
  202. }
  203. } else {
  204. if (names != null) {
  205. // System.getProperties().getProperty("os.name").toUpperCase().startsWith("WIN");
  206. for (int i = 0, j = names.length; i < j; i++) {
  207. if (names[i].equals(fileName)) {
  208. ftp.deleteFile(names[i]);
  209. }
  210. }
  211. } else {
  212. ftp.logout();
  213. success = true;
  214. return success;
  215. }
  216. }
  217. ftp.logout();
  218. success = true;
  219. } catch (IOException e) {
  220. e.printStackTrace();
  221. } finally {
  222. if (ftp.isConnected()) {
  223. try {
  224. ftp.disconnect();
  225. } catch (IOException ioe) {
  226. }
  227. }
  228. }
  229. return success;
  230. }
  231. /**
  232. * Description: 从FTP服务器下载文件,上传到ftp服务器
  233. *
  234. * @Version1.0
  235. * @param url
  236. * FTP服务器hostname
  237. * @param port
  238. * FTP服务器端口
  239. * @param username
  240. * FTP登录账号
  241. * @param password
  242. * FTP登录密码
  243. * @param remotePath
  244. * FTP服务器上的相对路径
  245. * @param fileName
  246. * 要下载的文件名
  247. * @param localPath
  248. * 下载后保存到本地的路径
  249. * @return
  250. */
  251. public static boolean downuploadFile(String url, // 下载FTP服务器
  252. int port,// 下载FTP服务器端口
  253. String username, // 下载FTP登录账号
  254. String password, // 下载FTP登录密码
  255. String remotePath,// 下载FTP服务器上的相对路径
  256. String fileName,// 要下载的文件名
  257. String urlup,// 上传FTP服务器hostname
  258. int portup,// 上传FTP服务器端口
  259. String usernameup, // 上传FTP登录账号
  260. String passwordup, // 上传FTP登录密码
  261. String pathup, // 上传FTP服务器保存目录
  262. String filenameup // 上传到FTP服务器上的文件名
  263. ) {
  264. boolean success = false;
  265. FTPClient ftp = new FTPClient();
  266. try {
  267. int reply;
  268. ftp.connect(url, port);
  269. ftp.enterLocalPassiveMode();
  270. // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
  271. ftp.login(username, password);// 登录
  272. reply = ftp.getReplyCode();
  273. if (!FTPReply.isPositiveCompletion(reply)) {
  274. ftp.disconnect();
  275. return success;
  276. }
  277. ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录
  278. FTPFile[] fs = null;
  279. String[] names = null;
  280. if (ftp.listFiles() != null) {
  281. fs = ftp.listFiles();
  282. }
  283. if (ftp.listNames().length > 0) {
  284. names = ftp.listNames();
  285. }
  286. if (fs != null && fs.length > 0) {
  287. for (FTPFile ff : fs) {
  288. String FtpFilename = new String(ff.getName().getBytes(
  289. "iso-8859-1"), "GBK");
  290. if (FtpFilename.equals(fileName)) {
  291. InputStream input=ftp.retrieveFileStream(fileName);
  292. int size=input.available();
  293. if(size>0){
  294. Boolean result = FtpUtil.uploadFile(urlup,
  295. portup, usernameup,
  296. passwordup, pathup, filenameup,
  297. input);
  298. }
  299. }
  300. }
  301. } else {
  302. if (names != null) {
  303. for (int i = 0, j = names.length; i < j; i++) {
  304. if (names[i].equals(fileName)) {
  305. InputStream input=ftp.retrieveFileStream(fileName);
  306. int size=input.available();
  307. if(size>0){
  308. Boolean result = FtpUtil.uploadFile(urlup,
  309. portup, usernameup,
  310. passwordup, pathup, filenameup,
  311. input);
  312. }
  313. }
  314. }
  315. } else {
  316. ftp.logout();
  317. success = true;
  318. return success;
  319. }
  320. }
  321. ftp.logout();
  322. success = true;
  323. } catch (IOException e) {
  324. e.printStackTrace();
  325. } finally {
  326. if (ftp.isConnected()) {
  327. try {
  328. ftp.disconnect();
  329. } catch (IOException ioe) {
  330. }
  331. }
  332. }
  333. return success;
  334. }
  335. public static void main(String[] args) throws Exception {
  336. // 从ftp下载文件
  337. // Boolean result = FtpUtil.downFile("192.xxx.xxx.01",
  338. // 21,"xx@outlook.com",
  339. // "qaz041366","/ftp", "log.txt",
  340. // "E:/iso/");
  341. // File file = new File("E:\\iso\\xx.txt");
  342. // if (file.exists()) {
  343. // return;
  344. // }
  345. //本地上传到FTP服务器
  346. // Boolean result = FtpUtil.uploadFile("192.xxx.xxx.01",
  347. // 21, "xx@outlook.com",
  348. // "qaz0413xx", "/ftp", "xx.log",
  349. // (InputStream) (new FileInputStream(new File("E:\\iso\\xx.log"))));
  350. // if (!result) {
  351. // // file.delete();
  352. // }
  353. //从一个ftp下载并上传到另一个
  354. Boolean result = FtpUtil.downuploadFile("192.xxx.xxx.01",
  355. 21, "xxx@outlook.com",
  356. "qaz041366", "/ftp", "gioi_log.log","192.xxx.xxx.02",
  357. 21, "xxx@outlook.com",
  358. "qaz041366", "/ftp", "xx.log");
  359. }
  360. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/255512?site
推荐阅读
相关标签
  

闽ICP备14008679号