Java常用FTP文件操作说明 ApacheFTPClientftp4jjftp.docx
《Java常用FTP文件操作说明 ApacheFTPClientftp4jjftp.docx》由会员分享,可在线阅读,更多相关《Java常用FTP文件操作说明 ApacheFTPClientftp4jjftp.docx(55页珍藏版)》请在冰点文库上搜索。
Java常用FTP文件操作说明ApacheFTPClientftp4jjftp
最近因工作需要,数据库中的数据需要从FTP服务中抽取数据文件然后校检再抽取到数据中。
因为第一步需要从FTP服务中抽取数据文件。
第二步采用JDBC批量数据更新。
1。
采用Apache.FTPClient:
Java代码
1./**
2. * Apache.FTPClient FTP操作共公类
3. *
4. * @author 张明学
5. *
6. */
7.public class FTPCommon {
8.
9. private FTPClient ftpClient;
10.
11. private FTPModel ftpModel;
12.
13. public FTPCommon(FTPModel ftp) {
14. super();
15. // 从配置文件中读取初始化信息
16. this.ftpClient = new FTPClient();
17. this.ftpModel = ftp;
18. }
19.
20. /**
21. * 连接并登录FTP服务器
22. *
23. */
24. public boolean ftpLogin() {
25. boolean isLogin = false;
26. FTPClientConfig ftpClientConfig = new FTPClientConfig(
27. FTPClientConfig.SYST_NT);
28. ftpClientConfig.setServerTimeZoneId(TimeZone.getDefault().getID());
29. this.ftpClient.setControlEncoding("GBK");
30. this.ftpClient.configure(ftpClientConfig);
31. try {
32. if (this.ftpModel.getPort() > 0) {
33. this.ftpClient.connect(ftpModel.getUrl(), ftpModel.getPort());
34. } else {
35. this.ftpClient.connect(ftpModel.getUrl());
36. }
37. // FTP服务器连接回答
38. int reply = this.ftpClient.getReplyCode();
39. if (!
FTPReply.isPositiveCompletion(reply)) {
40. this.ftpClient.disconnect();
41. return isLogin;
42. }
43. this.ftpClient.login(this.ftpModel.getUsername(), this.ftpModel
44. .getPassword());
45. this.ftpClient.changeWorkingDirectory(this.ftpModel.getRemoteDir());
46. this.ftpClient.setFileType(FTPClient.FILE_STRUCTURE);
47. LogUtil.infoOutPut("成功登陆FTP服务器:
" + this.ftpModel.getUrl() + " 端口号:
"
48. + this.getFtpModel().getPort() + " 目录:
"
49. + this.ftpModel.getRemoteDir());
50. isLogin = true;
51. } catch (SocketException e) {
52. e.printStackTrace();
53. LogUtil.logPrint("连接FTP服务失败!
", Constants.LOG_EXCEPTION);
54. LogUtil.logPrint(e.getMessage(), Constants.LOG_EXCEPTION);
55. } catch (IOException e) {
56. e.printStackTrace();
57. LogUtil.logPrint("登录FTP服务失败!
", Constants.LOG_EXCEPTION);
58. LogUtil.logPrint(e.getMessage(), Constants.LOG_EXCEPTION);
59. }
60. System.out.println(this.ftpClient.getBufferSize());
61. this.ftpClient.setBufferSize(1024 * 2);
62. this.ftpClient.setDataTimeout(2000);
63. return isLogin;
64. }
65.
66. /**
67. * 退出并关闭FTP连接
68. *
69. */
70. public void close() {
71. if (null !
= this.ftpClient && this.ftpClient.isConnected()) {
72. try {
73. boolean reuslt = this.ftpClient.logout();// 退出FTP服务器
74. if (reuslt) {
75. LogUtil.info("退出并关闭FTP服务器的连接");
76. }
77. } catch (IOException e) {
78. e.printStackTrace();
79. LogUtil.exception("退出FTP服务器异常!
");
80. LogUtil.exception(e.getMessage());
81. } finally {
82. try {
83. this.ftpClient.disconnect();// 关闭FTP服务器的连接
84. } catch (IOException e) {
85. e.printStackTrace();
86. LogUtil.exception("关闭FTP服务器的连接异常!
");
87. LogUtil.exception(e.getMessage());
88. }
89. }
90. }
91. }
92.
93. /**
94. * 检查FTP服务器是否关闭 ,如果关闭接则连接登录FTP
95. *
96. * @return
97. */
98. public boolean isOpenFTPConnection() {
99. boolean isOpen = false;
100. if (null == this.ftpClient) {
101. return false;
102. }
103. try {
104. // 没有连接
105. if (!
this.ftpClient.isConnected()) {
106. isOpen = this.ftpLogin();
107. }
108. } catch (Exception e) {
109. e.printStackTrace();
110. LogUtil.exception("FTP服务器连接登录异常!
");
111. LogUtil.exception(e.getMessage());
112. isOpen = false;
113. }
114. return isOpen;
115. }
116.
117. /**
118. * 设置传输文件的类型[文本文件或者二进制文件]
119. *
120. * @param fileType--FTPClient.BINARY_FILE_TYPE,FTPClient.ASCII_FILE_TYPE
121. */
122. public void setFileType(int fileType) {
123. try {
124. this.ftpClient.setFileType(fileType);
125. } catch (IOException e) {
126. e.printStackTrace();
127. LogUtil.exception("设置传输文件的类型异常!
");
128. LogUtil.exception(e.getMessage());
129. }
130. }
131.
132. /**
133. * 下载文件
134. *
135. * @param localFilePath
136. * 本地文件名及路径
137. * @param remoteFileName
138. * 远程文件名称
139. * @return
140. */
141. public boolean downloadFile(String localFilePath, String remoteFileName) {
142. BufferedOutputStream outStream = null;
143. boolean success = false;
144. try {
145. outStream = new BufferedOutputStream(new FileOutputStream(
146. localFilePath));
147. success = this.ftpClient.retrieveFile(remoteFileName, outStream);
148. } catch (FileNotFoundException e) {
149. e.printStackTrace();
150. } catch (IOException e) {
151. e.printStackTrace();
152. } finally {
153. if (outStream !
= null) {
154. try {
155. outStream.flush();
156. outStream.close();
157. } catch (IOException e) {
158. e.printStackTrace();
159. }
160. }
161. }
162. return success;
163. }
164.
165. /**
166. * 下载文件
167. *
168. * @param localFilePath
169. * 本地文件
170. * @param remoteFileName
171. * 远程文件名称
172. * @return
173. */
174. public boolean downloadFile(File localFile, String remoteFileName) {
175. BufferedOutputStream outStream = null;
176. FileOutputStream outStr = null;
177. boolean success = false;
178. try {
179. outStr = new FileOutputStream(localFile);
180. outStream = new BufferedOutputStream(outStr);
181. success = this.ftpClient.retrieveFile(remoteFileName, outStream);
182. } catch (FileNotFoundException e) {
183. e.printStackTrace();
184. } catch (IOException e) {
185. e.printStackTrace();
186. } finally {
187. try {
188. if (null !
= outStream) {
189. try {
190. outStream.flush();
191. outStream.close();
192. } catch (IOException e) {
193. e.printStackTrace();
194. }
195. }
196. } catch (Exception e) {
197. e.printStackTrace();
198. } finally {
199. if (null !
= outStr) {
200. try {
201. outStr.flush();
202. outStr.close();
203. } catch (IOException e) {
204. e.printStackTrace();
205. }
206.
207. }
208. }
209. }
210. return success;
211. }
212.
213. /**
214. * 上传文件
215. *
216. * @param localFilePath
217. * 本地文件路径及名称
218. * @param remoteFileName
219. * FTP 服务器文件名称
220. * @return
221. */
222. public boolean uploadFile(String localFilePath, String remoteFileName) {
223. BufferedInputStream inStream = null;
224. boolean success = false;
225. try {
226. inStream = new BufferedInputStream(new FileInputStream(
227. localFilePath));
228. success = this.ftpClient.storeFile(remoteFileName, inStream);
229. } catch (FileNotFoundException e) {
230. e.printStackTrace();
231. } catch (IOException e) {
232. e.printStackTrace();
233. } finally {
234. if (inStream !
= null) {
235. try {
236. inStream.close();
237. } catch (IOException e) {
238. e.printStackTrace();
239. }
240. }
241. }
242. return success;
243. }
244.
245. /**
246. * 上传文件
247. *
248. * @param localFilePath
249. * 本地文件
250. * @param remoteFileName
251. * FTP 服务器文件名称
252. * @return
253. */
254. public boolean uploadFile(File localFile, String remoteFileName) {
255. BufferedInputStream inStrea