Author: rwinston Date: Sat Mar 20 04:17:00 2010 New Revision: 925541 URL: http://svn.apache.org/viewvc?rev=925541&view=rev Log: Revert
Modified: commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPExample.java Modified: commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPExample.java URL: http://svn.apache.org/viewvc/commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPExample.java?rev=925541&r1=925540&r2=925541&view=diff ============================================================================== --- commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPExample.java (original) +++ commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPExample.java Sat Mar 20 04:17:00 2010 @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - + package examples.ftp; import java.io.FileInputStream; @@ -22,14 +22,12 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.io.PrintStream; import java.io.PrintWriter; import org.apache.commons.net.PrintCommandListener; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPConnectionClosedException; -import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPReply; /*** @@ -42,22 +40,152 @@ import org.apache.commons.net.ftp.FTPRep * Usage: ftp [-s] [-b] <hostname> <username> <password> <remote file> <local file> * <p> ***/ -public final class FTPExample { +public final class FTPExample +{ + + public static final String USAGE = + "Usage: ftp [-s] [-b] <hostname> <username> <password> <remote file> <local file>\n" + + "\nDefault behavior is to download a file and use ASCII transfer mode.\n" + + "\t-s store file on server (upload)\n" + + "\t-b use binary transfer mode\n"; - public static final void main(String[] args) throws IOException + public static final void main(String[] args) { - FTPClient client = new FTPClient(); - client.setControlEncoding("utf-8"); - client.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); - client.connect("localhost"); - client.login("rory", "yi6bovak"); - - PrintStream out = new PrintStream(System.out, true, "utf-8"); - - for (FTPFile file : client.listFiles()) - out.println(file.getName()); - - out.println("ä½ å¥½å"); + int base = 0; + boolean storeFile = false, binaryTransfer = false, error = false; + String server, username, password, remote, local; + FTPClient ftp; + + for (base = 0; base < args.length; base++) + { + if (args[base].startsWith("-s")) + storeFile = true; + else if (args[base].startsWith("-b")) + binaryTransfer = true; + else + break; + } + + if ((args.length - base) != 5) + { + System.err.println(USAGE); + System.exit(1); + } + + server = args[base++]; + username = args[base++]; + password = args[base++]; + remote = args[base++]; + local = args[base]; + + ftp = new FTPClient(); + ftp.addProtocolCommandListener(new PrintCommandListener( + new PrintWriter(System.out))); + + try + { + int reply; + ftp.connect(server); + System.out.println("Connected to " + server + "."); + + // After connection attempt, you should check the reply code to verify + // success. + reply = ftp.getReplyCode(); + + if (!FTPReply.isPositiveCompletion(reply)) + { + ftp.disconnect(); + System.err.println("FTP server refused connection."); + System.exit(1); + } + } + catch (IOException e) + { + if (ftp.isConnected()) + { + try + { + ftp.disconnect(); + } + catch (IOException f) + { + // do nothing + } + } + System.err.println("Could not connect to server."); + e.printStackTrace(); + System.exit(1); + } + +__main: + try + { + if (!ftp.login(username, password)) + { + ftp.logout(); + error = true; + break __main; + } + + System.out.println("Remote system is " + ftp.getSystemName()); + + if (binaryTransfer) + ftp.setFileType(FTP.BINARY_FILE_TYPE); + + // Use passive mode as default because most of us are + // behind firewalls these days. + ftp.enterLocalPassiveMode(); + + if (storeFile) + { + InputStream input; + + input = new FileInputStream(local); + + ftp.storeFile(remote, input); + + input.close(); + } + else + { + OutputStream output; + + output = new FileOutputStream(local); + + ftp.retrieveFile(remote, output); + + output.close(); + } + + ftp.logout(); + } + catch (FTPConnectionClosedException e) + { + error = true; + System.err.println("Server closed connection."); + e.printStackTrace(); + } + catch (IOException e) + { + error = true; + e.printStackTrace(); + } + finally + { + if (ftp.isConnected()) + { + try + { + ftp.disconnect(); + } + catch (IOException f) + { + // do nothing + } + } + } + + System.exit(error ? 1 : 0); } // end main }