|
使用 sun.net.ftp.FtpClient 实现文件的上传下载(只能针对文件)
一、下载
import java.io.DataInputStream;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import sun.net.TelnetInputStream;
import sun.net.ftp.FtpClient;
public class ftpDown {
public ftpDown() {
}
public static void main(String[] args) {
try {
FtpClient fc = new FtpClient("ftp.xx.com");
fc.login("test", "test");
int ch;
File fi = new File("d:\\index.html");
RandomAccessFile getFile = new RandomAccessFile(fi, "rw");
getFile.seek(0);
TelnetInputStream fget = fc.get("inde.html");
DataInputStream puts = new DataInputStream(fget);
while ((ch = puts.read()) >= 0) {
getFile.write(ch);
}
fget.close();
getFile.close();
fc.closeServer();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
二 上传
import java.io.FileInputStream;
import java.io.IOException;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
public class TestFtpClient {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
FtpClient ftpClient;
String server = "localhost";
String user = "user";
String password = "password";
String path = "/home/user/file";
String filename = "sourcefile.txt";
try {
// server:FTP服务器的IP地址;user:登录FTP服务器的用户名
// password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径
ftpClient = new FtpClient();
ftpClient.openServer(server);
ftpClient.login(user, password);
// path是ftp服务下主目录的子目录
if (path.length() != 0)
ftpClient.cd(path);
// 用2进制上传
ftpClient.binary();
TelnetOutputStream os = null;
FileInputStream is = null;
try {
// "descfile.txt"用ftp上传后的新文件名
os = ftpClient.put("descfile.txt");
java.io.File file_in = new java.io.File(filename);
if (file_in.length() == 0) {
throw new Exception("上传文件为空!");
}
is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
} finally {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
}
System.out.println("上传文件成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
参考文章:
http://www.diybl.com/course/3_program/java/javajs/200822/98380.html |
|
|