import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;import org.apache.commons.io.FileUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPConnectionClosedException;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class MYClient {
private static FTPClient FtpClient = null;
private static String UserName;
private static String Password;
private static String Ip;
private static int Port;
public MYClient(){};
public static void Setting(){
Port = 21;
UserName = "admin";
Password = "12345678";
Ip = "127.0.0.1";
}
public static void connectServer(){
try{
int reply;
FtpClient = new FTPClient();
FtpClient.configure(getFtpConfig());
FtpClient.connect(Ip, Port);
FtpClient.login(UserName, Password);
FtpClient.setDefaultPort(Port);
System.out.print(FtpClient.getReplyString());
reply = FtpClient.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)){
FtpClient.disconnect();
System.err.println("连接失败!");
}
else
System.out.println("连接成功");
}catch(Exception e){
System.out.println("登录失败");
e.printStackTrace();
}
}
private static FTPClientConfig getFtpConfig() {
FTPClientConfig ftpConfig = new FTPClientConfig(FTPClientConfig.SYST_UNIX);
ftpConfig.setServerLanguageCode(FTP.DEFAULT_CONTROL_ENCODING);
return ftpConfig;
}
public static void uploadFile(String localFilePath,String newFileName){
connectServer();
BufferedInputStream buffIn = null;
try{
buffIn = new BufferedInputStream(new FileInputStream(localFilePath));
FtpClient.storeFile(newFileName,buffIn);
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(buffIn!=null)
buffIn.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
public static void closeconnect(){
try{
if(FtpClient!=null){
FtpClient.logout();
FtpClient.disconnect();
System.out.println("已断开链接!");
}
}catch(Exception e){
System.out.println("出现错误!");
e.printStackTrace();
}
}
public static void listRemoteFiles(){
try{
FTPFile[] Ftpfile=FtpClient.listFiles();
for(int i=0;i<Ftpfile.length;i++)
System.out.println(Ftpfile[i].getName());
}catch(Exception e){
System.out.println("出现错误!");
e.printStackTrace();
}
}
public static void setFileType(int fileType){
try{
connectServer();
FtpClient.setFileType(fileType);
System.out.println("设置完了!");
}catch(Exception e){
e.printStackTrace();
}
}
public static boolean uploadFile(String url,int port,String username, String password, String path, String filename, InputStream input) {
connectServer();
boolean success = false;
try{
FtpClient.changeWorkingDirectory(path);
FtpClient.storeFile(filename, input);
input.close();
success = true;
} catch (IOException e) {
e.printStackTrace();

return success;

public static void deleteFile(){
try{
FtpClient.deleteFile("fengzu.docx");
System.out.println("删除成功!");
}catch(Exception e){
System.out.println("删除错误!");
e.printStackTrace();
}
}
public static void test(){
if(FtpClient.isConnected()){System.out.println("OK");}
try{
String[] arg = FtpClient.listNames("D:/apache-ftpserver-1.0.5/res/home");
for(int i=0;i<arg.length;i++){
System.out.println(arg[i]);
}
}catch(Exception e){
System.out.println("错误");
e.printStackTrace();
}
}
public static void loadFile(String remoteFileName,String localFileName){
connectServer();
BufferedOutputStream buffOut = null;
try{
buffOut = new BufferedOutputStream(new FileOutputStream(localFileName));
FtpClient.retrieveFile(remoteFileName, buffOut);
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(buffOut!=null)
buffOut.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
public static void main(String[] args){
MYClient.Setting();
MYClient.connectServer();
MYClient.setFileType(FTP.BINARY_FILE_TYPE);
MYClient.test();
MYClient.closeconnect();

}
}错误是这些java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:150)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.readLine(BufferedReader.java:317)
at java.io.BufferedReader.readLine(BufferedReader.java:382)
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:294)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:490)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:534)
at org.apache.commons.net.ftp.FTP.port(FTP.java:862)
at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:463)
at org.apache.commons.net.ftp.FTPClient.listNames(FTPClient.java:1950)
at MYClient.test(MYClient.java:130)
at MYClient.main(MYClient.java:160)
出现错误!
java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295)
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)
at java.io.BufferedWriter.flush(BufferedWriter.java:254)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:472)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:534)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:583)
at org.apache.commons.net.ftp.FTP.quit(FTP.java:794)
at org.apache.commons.net.ftp.FTPClient.logout(FTPClient.java:697)
at MYClient.closeconnect(MYClient.java:77)
at MYClient.main(MYClient.java:161)可以连上服务器
也可以删东西
但是似乎一读服务器的东西就不行