首页 > 应用开发 > Java > JAVA实现FTP上传下载文件的功能
这个例子实现了文件上传和文件下载的功能。
import java.io.*;
import java.net.*;
public class JAVAFTP {
private static final int CTRLPORT = 21; // ftp的端口
private static Socket sSocket;
private static PrintWriter wOutput;
private static BufferedReader bInput;
private static byte[] localHost; //本地主机地址
public static void main(String[] args) {
try {
String sHost = "192.168.1.1";
String sloginName = "user";
String spassword = "password";
String sdir = "/home";
String sfile = "testfile.txt";
//连接FTP
sSocket = new Socket(sHost, CTRLPORT);
localHost = sSocket.getLocalAddress().getAddress();
wOutput = new PrintWriter(sSocket.getOutputStream());
bInput = new
BufferedReader(new InputStreamReader(sSocket.getInputStream()));
//用户认证
wOutput.println("USER " + sloginName );
wOutput.flush();
wOutput.println("PASS " + spassword );
wOutput.flush();
//转入指定目录
wOutput.println("CWD " + sdir);
wOutput.flush();
//二进制模式(assic模式="TYPE A")
wOutput.println("TYPE I");
wOutput.flush();
// 上传文件
FileInputStream fis = new FileInputStream(sfile);
Socket dataSocket = dataConnection("STOR " + sfile);//"RETR "下载文件
OutputStream outstr = dataSocket.getOutputStream();
int n;
byte[] buff = new byte[1024];
while ((n = fis.read(buff)) > 0) {
outstr.write(buff,0,n);
}
dataSocket.close();
fis.close();
//关闭连接
wOutput.close();
bInput.close();
sSocket.close();
}catch (Exception e) {
e.printStackTrace();
}
}
//发送和接受数据
private static Socket dataConnection(String scmd)
throws IOException,UnknownHostException {
String cmd = "PORT ";
ServerSocket sDtSocket= new ServerSocket(0,1);
for (int i=0;i<4;i++) {
cmd = cmd + ( localHost[i] & 0xff ) + ",";
}
cmd = cmd + ((( sDtSocket.getLocalPort())/256 ) & 0xff )
+ ","
+ (sDtSocket.getLocalPort() & 0xff );
wOutput.println(cmd);
wOutput.flush();
wOutput.println(scmd);
wOutput.flush();
Socket dtSocket = sDtSocket.accept();
sDtSocket.close();
return dtSocket;
}
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/174388/viewspace-921762/ ,如需转载,请注明出处,否则将追究法律责任。