|
Создание своего ftp-клиента на java
#38149154
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
|
|
|
Снова всем привет.
У меня есть вот такой код
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189.
package JavaDBFReaderTest;
import org.apache.commons.net.ftp.FTPClient;
import java.io.IOException;
import java.io.FileOutputStream;
import java.io.FileInputStream;
public class FTP_Client {
/**
* Функция для получения списка файлов и папок в папке Folder
* @param FTPADDR, адрес ФТП сервера
* @param user, логин к фтп
* @param Password, пароль к фтп
* @param Folder, папка где будет производиться поиск
* @return String[] RESULT, список файлов/папок
*/
public static String[] GetList(String FTPADDR, String user, String Password,String Folder)
{
String[] RESULT;
RESULT = null;
FTPClient client = new FTPClient();
try {
client.connect(FTPADDR);
client.login(user, Password);
client.changeWorkingDirectory(Folder);
RESULT = client.listNames();
client.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return RESULT;
}
/**
* Upload a file to a FTP server
* @param FTPADDR, адрес ФТП сервера
* @param user, логин к фтп
* @param Password, пароль к фтп
* @param PathOnFtp, путь к файлу на фтп - например /upload/touch.dat
* @param FilenameOnLocalMachine, путь к файлу на локальной машине - например C:/somefile.txt
*/
public static void UploadFileOnFtp(String FTPADDR, String user, String Password,String PathOnFtp, String FilenameOnLocalMachine)
{
FTPClient client = new FTPClient();
FileInputStream fis = null;
try {
client.connect(FTPADDR);
client.login(user, Password);
//client.changeWorkingDirectory("upload");
// Create an InputStream of the file to be uploaded
String filename = FilenameOnLocalMachine;
fis = new FileInputStream(filename);
// Store file to server
//
client.storeFile(PathOnFtp, fis);
client.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fis != null) {
fis.close();
}
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* Download File from FTP
* @param FTPADDR, адрес ФТП сервера
* @param user, логин к фтп
* @param Password, пароль к фтп
* @param FullPathToPutFile - полный путь к файлу на локальной машине, куда будем его сохранять
* @param FilenameOnFTP - имя файла на фтп (функция ищет файл в папке /upload/)
*/
public static void DownloadFileFromFTP(String FTPADDR, String user, String Password,String FullPathToPutFile, String FilenameOnFTP)
{
FTPClient client = new FTPClient();
FileOutputStream fos = null;
try {
client.connect(FTPADDR);
client.login(user, Password);
// The remote filename to be downloaded.
String filename = FullPathToPutFile;
fos = new FileOutputStream(filename);
// Download file from FTP server
client.retrieveFile("/upload/"+FilenameOnFTP, fos);
//
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fos != null) {
fos.close();
}
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* Delete File From FTP
* @param FTPADDR, адрес ФТП сервера
* @param user, логин к фтп
* @param Password, пароль к фтп
* @param Filename, путь к файлу (например /upload/touch.dat)
*/
public static void DeleteFileOnFtp(String FTPADDR, String user, String Password,String Filename)
{
FTPClient client = new FTPClient();
try {
client.connect(FTPADDR);
client.login(user, Password);
//
// Delete file on the FTP server. When the FTP delete complete
// it returns true.
//
String filename = Filename;
boolean deleted = client.deleteFile(filename);
if (deleted) {
System.out.println("File deleted...");
}
client.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
// Использование
DownloadFileFromFTP("127.0.0.1","user","user","C:/touch.dat","touch.dat");
UploadFileOnFtp("127.0.0.1","user","user","/upload/touch.dat","C:/1.xml");
String[] RESULT = GetList("127.0.0.1","user","user","upload");
for (int i=0;i<RESULT.length;i++)
{
System.out.println("Name = " + RESULT[i]);
}
DeleteFileOnFtp("127.0.0.1","user","user","/upload/touch.dat");
}
}
При запуске получаю вот такие ошибки. Что я делаю не так.
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:175)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:196)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:289)
at JavaDBFReaderTest.FTP_Client.DownloadFileFromFTP(FTP_Client.java:104)
at JavaDBFReaderTest.FTP_Client.main(FTP_Client.java:176)
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:175)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:196)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:289)
at JavaDBFReaderTest.FTP_Client.UploadFileOnFtp(FTP_Client.java:60)
at JavaDBFReaderTest.FTP_Client.main(FTP_Client.java:177)
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:175)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:196)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:289)
at JavaDBFReaderTest.FTP_Client.GetList(FTP_Client.java:26)
at JavaDBFReaderTest.FTP_Client.main(FTP_Client.java:179)
Exception in thread "main" java.lang.NullPointerException
at JavaDBFReaderTest.FTP_Client.main(FTP_Client.java:180)
Библиотеку скачал отсюда
http://commons.apache.org/net/download_net.cgi
|
|
|