?? ftpclient.java
字號:
portSocket.close();
}//end of port transfer
return dataSocket; // return the dataSocket
}
/** open a FTP connection to host <i>host</i>. */
public void openServer(String host) throws IOException, UnknownHostException {
int port = FTP_PORT;
if (serverSocket != null)
closeServer();
serverSocket = new Socket(host, FTP_PORT);
serverOutput = new PrintWriter(new BufferedOutputStream(serverSocket.getOutputStream()),true);
serverInput = new BufferedInputStream(serverSocket.getInputStream());
}
/** open a FTP connection to host <i>host</i> on port <i>port</i>. */
public void openServer(String host, int port) throws IOException, UnknownHostException {
if (serverSocket != null)
closeServer();
serverSocket = new Socket(host, port);
//serverSocket.setSoLinger(true,30000);
serverOutput = new PrintWriter(new BufferedOutputStream(serverSocket.getOutputStream()),
true);
serverInput = new BufferedInputStream(serverSocket.getInputStream());
if (readReply() == FTP_ERROR)
throw new FtpConnectException("Welcome message");
}
/**
* login user to a host with username <i>user</i> and password
* <i>password</i>
*/
public void login(String user, String password) throws IOException {
if (!serverIsOpen())
throw new FtpLoginException("Error: not connected to host.\n");
this.user = user;
this.password = password;
if (issueCommand("USER " + user) == FTP_ERROR)
throw new FtpLoginException("Error: User not found.\n");
if (password != null && issueCommand("PASS " + password) == FTP_ERROR)
throw new FtpLoginException("Error: Wrong Password.\n");
}
/**
* login user to a host with username <i>user</i> and no password
* such as HP server which uses the form "<username>/<password>,user.<group>
*/
public void login(String user) throws IOException {
if (!serverIsOpen())
throw new FtpLoginException("not connected to host");
this.user = user;
if (issueCommand("USER " + user) == FTP_ERROR)
throw new FtpLoginException("Error: Invalid Username.\n");
}
/** GET a file from the FTP server in Ascii mode*/
public BufferedReader getAscii(String filename) throws IOException {
Socket s = null;
try {
s = openDataConnection("RETR " + filename);
} catch (FileNotFoundException fileException) {fileException.printStackTrace();}
return new BufferedReader( new InputStreamReader(s.getInputStream()));
}
/** GET a file from the FTP server in Binary mode*/
public BufferedInputStream getBinary(String filename) throws IOException {
Socket s = null;
try {
s = openDataConnection("RETR " + filename);
} catch (FileNotFoundException fileException) {fileException.printStackTrace();}
return new BufferedInputStream(s.getInputStream());
}
/** PUT a file to the FTP server in Ascii mode*/
public BufferedWriter putAscii(String filename) throws IOException {
Socket s = openDataConnection("STOR " + filename);
return new BufferedWriter(new OutputStreamWriter(s.getOutputStream()),4096);
}
/** PUT a file to the FTP server in Binary mode*/
public BufferedOutputStream putBinary(String filename) throws IOException {
Socket s = openDataConnection("STOR " + filename);
return new BufferedOutputStream(s.getOutputStream());
}
/** APPEND (with create) to a file to the FTP server in Ascii mode*/
public BufferedWriter appendAscii(String filename) throws IOException {
Socket s = openDataConnection("APPE " + filename);
return new BufferedWriter(new OutputStreamWriter(s.getOutputStream()),4096);
}
/** APPEND (with create) to a file to the FTP server in Binary mode*/
public BufferedOutputStream appendBinary(String filename) throws IOException {
Socket s = openDataConnection("APPE " + filename);
return new BufferedOutputStream(s.getOutputStream());
}
/** NLIST files on a remote FTP server */
public BufferedReader nlist() throws IOException {
Socket s = openDataConnection("NLST");
return new BufferedReader( new InputStreamReader(s.getInputStream()));
}
/** LIST files on a remote FTP server */
public BufferedReader list() throws IOException {
Socket s = openDataConnection("LIST");
return new BufferedReader( new InputStreamReader(s.getInputStream()));
}
/** CD to a specific directory on a remote FTP server */
public void cd(String remoteDirectory) throws IOException {
issueCommandCheck("CWD " + remoteDirectory);
}
/** Rename a file on the remote server */
public void rename(String oldFile, String newFile) throws IOException {
issueCommandCheck("RNFR " + oldFile);
issueCommandCheck("RNTO " + newFile);
}
/** Site Command */
public void site(String params) throws IOException {
issueCommandCheck("SITE "+ params);
}
/** Set transfer type to 'I' */
public void binary() throws IOException {
issueCommandCheck("TYPE I");
binaryMode = true;
}
/** Set transfer type to 'A' */
public void ascii() throws IOException {
issueCommandCheck("TYPE A");
binaryMode = false;
}
/** Send Abort command */
public void abort() throws IOException {
issueCommandCheck("ABOR");
}
/** Go up one directory on remots system */
public void cdup() throws IOException {
issueCommandCheck("CDUP");
}
/** Create a directory on the remote system */
public void mkdir(String s) throws IOException {
issueCommandCheck("MKD " + s);
}
/** Delete the specified directory from the ftp file system */
public void rmdir(String s) throws IOException {
issueCommandCheck("RMD " + s);
}
/** Delete the file s from the ftp file system */
public void delete(String s) throws IOException {
issueCommandCheck("DELE " + s);
}
/** Get the name of the present working directory on the ftp file system */
public void pwd() throws IOException {
issueCommandCheck("PWD");
}
/** Retrieve the system type from the remote server */
public void syst() throws IOException {
issueCommandCheck("SYST");
}
/** New FTP client connected to host <i>host</i>. */
public FtpClient(String host) throws IOException {
openServer(host, FTP_PORT);
}
/** New FTP client connected to host <i>host</i>, port <i>port</i>. */
public FtpClient(String host, int port) throws IOException {
openServer(host, port);
}
/** Method to demonstrate use of FtpClient class */
public static void main (String args []) throws IOException{
System.out.println("Demo of FtpClient class.\n");
// standard login procedures, must be done on all ftp servers
FtpClient f = new FtpClient("ftp.sun.com");
System.out.print(f.getResponseString());
f.login("anonymous","me@abc.com");
System.out.print(f.getResponseString());
f.pwd();
System.out.println(f.command);
System.out.print(f.getResponseString());
f.setPassive(true);
// here's how you can do a listing
System.out.println("\nDemo of nlist() function");
f.ascii(); // set client to ascii mode to get text listing
System.out.println(f.command);
System.out.print(f.getResponseString());
BufferedReader t = f.nlist(); // f.list gives a few more details
System.out.println(f.command);
System.out.print(f.getResponseString());
while( true ) {
String stringBuffer = t.readLine();
if( stringBuffer == null ) break;
else System.out.println(stringBuffer);
}
t.close();
System.out.print(f.getResponseString());
// here's how to get a file using the getAscii() function. The getBinary() function is similar in use
System.out.println("\nDemo of getAscii() function");
f.ascii(); // set transfer mode to ASCII, it has to be done by the user.
System.out.println(f.command);
System.out.print(f.getResponseString());
BufferedReader bufGet = f.getAscii("welcome.msg");
System.out.println(f.command);
System.out.print(f.getResponseString());
PrintWriter pOut = new PrintWriter(new BufferedWriter(new FileWriter("welcome.msg")));
int i;
char c[] = new char[4096];
while ((i = bufGet.read(c)) != -1)
pOut.write(c,0,i);
bufGet.close();
pOut.close();
System.out.print(f.getResponseString());
// here's how to APPEND an ASCII file using the appendAscii() function. The appendBinary() function
// is similar in use. I am leaving this code commented out because you can't send files to the
// sun ftp site but you can try this on another ftp server
/*
System.out.println("\nDemo of appendAscii() function");
BufferedWriter bufAppe;
String localFile = "file name goes here";
f.ascii();
System.out.println(f.command);
try {
bufAppe = f.appendAscii(localFile);
System.out.println(f.command);
System.out.print(f.getResponseString());
FileReader fIn = new FileReader(localFile);
BufferedReader bufIn = new BufferedReader(fIn);
int k;
char b[] = new char[1024];
while ((k = bufIn.read(b)) != -1)
bufAppe.write(b,0,k);
bufIn.close();
bufAppe.flush();
bufAppe.close();
}catch(Exception appendErr) {
System.out.println(appendErr.toString());//printStackTrace();
}
System.out.print(f.getResponseString());
// here's how to send a binary file using the putBianary() function. The putAscii() function
// is similar in use. I am leaving this code commented out because you can't send files to the
// sun ftp site but you can try this on another ftp server
System.out.println("\nDemo of putBinary() function");
String localFile = "file name goes here";
f.binary();
System.out.println(f.command);
BufferedOutputStream bufPut = f.putBinary(localFile);
System.out.println(f.command);
System.out.print(f.getResponseString());
BufferedInputStream bufIn = new BufferedInputStream(new FileInputStream(localFile));
int j;
byte b[] = new byte[1024];
while ((j = bufIn.read(b)) != -1)
bufPut.write(b,0,j);
bufIn.close();
bufPut.flush();
bufPut.close();
System.out.print(f.getResponseString());
*/
// close the connection
f.closeServer();
System.out.println(f.command);
System.out.print(f.getResponseString());
}
}
class FtpLoginException extends FtpProtocolException {
FtpLoginException(String s) {
super(s);
}
}
class FtpConnectException extends FtpProtocolException {
FtpConnectException(String s) {
super(s);
}
}
class FtpProtocolException extends IOException {
FtpProtocolException(String s) {
super(s);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -