You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2017/03/27 17:11:07 UTC
svn commit: r1788984 - in /commons/proper/net/trunk/src: changes/
main/java/examples/ftp/ main/java/org/apache/commons/net/ftp/
Author: sebb
Date: Mon Mar 27 17:11:07 2017
New Revision: 1788984
URL: http://svn.apache.org/viewvc?rev=1788984&view=rev
Log:
NET-634 Add SIZE command support
Modified:
commons/proper/net/trunk/src/changes/changes.xml
commons/proper/net/trunk/src/main/java/examples/ftp/FTPClientExample.java
commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTP.java
commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java
commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPCmd.java
Modified: commons/proper/net/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/net/trunk/src/changes/changes.xml?rev=1788984&r1=1788983&r2=1788984&view=diff
==============================================================================
--- commons/proper/net/trunk/src/changes/changes.xml [utf-8] (original)
+++ commons/proper/net/trunk/src/changes/changes.xml [utf-8] Mon Mar 27 17:11:07 2017
@@ -71,6 +71,9 @@ This is mainly a bug-fix release. See fu
However it is not source compatible with releases before 3.4, as some methods were added to the interface NtpV3Packet in 3.4
">
+ <action issue="NET-634" type="add" dev="sebb" due-to="Mauro Molinari">
+ Add SIZE command support
+ </action>
<action type="add" dev="sebb">
Add POP3ExportMbox example code
</action>
Modified: commons/proper/net/trunk/src/main/java/examples/ftp/FTPClientExample.java
URL: http://svn.apache.org/viewvc/commons/proper/net/trunk/src/main/java/examples/ftp/FTPClientExample.java?rev=1788984&r1=1788983&r2=1788984&view=diff
==============================================================================
--- commons/proper/net/trunk/src/main/java/examples/ftp/FTPClientExample.java (original)
+++ commons/proper/net/trunk/src/main/java/examples/ftp/FTPClientExample.java Mon Mar 27 17:11:07 2017
@@ -63,6 +63,7 @@ public final class FTPClientExample
"\t-E - encoding to use for control channel\n" +
"\t-f - issue FEAT command (remote and local files are ignored)\n" +
"\t-h - list hidden files (applies to -l and -n only)\n" +
+ "\t-i - issue SIZE command for a file\n" +
"\t-k secs - use keep-alive timer (setControlKeepAliveTimeout)\n" +
"\t-l - list files using LIST (remote is used as the pathname if provided)\n" +
"\t Files are listed twice: first in raw mode, then as the formatted parsed data.\n" +
@@ -91,6 +92,7 @@ public final class FTPClientExample
boolean storeFile = false, binaryTransfer = false, error = false, listFiles = false, listNames = false, hidden = false;
boolean localActive = false, useEpsvWithIPv4 = false, feat = false, printHash = false;
boolean mlst = false, mlsd = false, mdtm = false, saveUnparseable = false;
+ boolean size = false;
boolean lenient = false;
long keepAliveTimeout = -1;
int controlKeepAliveReplyTimeout = -1;
@@ -149,6 +151,10 @@ public final class FTPClientExample
else if (args[base].equals("-h")) {
hidden = true;
}
+ else if (args[base].equals("-i")) {
+ size = true;
+ minParams = 3;
+ }
else if (args[base].equals("-k")) {
keepAliveTimeout = Long.parseLong(args[++base]);
}
@@ -404,7 +410,7 @@ __main:
}
}
// Allow multiple list types for single invocation
- else if (listFiles || mlsd || mdtm || mlst || listNames)
+ else if (listFiles || mlsd || mdtm || mlst || listNames || size)
{
if (mlsd) {
for (FTPFile f : ftp.mlistDir(remote)) {
@@ -432,6 +438,9 @@ __main:
System.out.println(s);
}
}
+ if (size) {
+ System.out.println("Size="+ftp.getSize(remote));
+ }
// Do this last because it changes the client
if (listFiles) {
if (lenient || serverTimeZoneId != null) {
Modified: commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTP.java
URL: http://svn.apache.org/viewvc/commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTP.java?rev=1788984&r1=1788983&r2=1788984&view=diff
==============================================================================
--- commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTP.java (original)
+++ commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTP.java Mon Mar 27 17:11:07 2017
@@ -1695,6 +1695,25 @@ public class FTP extends SocketClient
}
/***
+ * A convenience method to send the FTP SIZE command to the server,
+ * receive the reply, and return the reply code.
+ *
+ * @param parameters The site parameters to send.
+ * @return The reply code received from the server.
+ * @throws FTPConnectionClosedException
+ * If the FTP server prematurely closes the connection as a result
+ * of the client being idle or some other reason causing the server
+ * to send FTP reply code 421. This exception may be caught either
+ * as an IOException or independently as itself.
+ * @throws IOException If an I/O error occurs while either sending the
+ * command or receiving the server reply.
+ ***/
+ public int size(String parameters) throws IOException
+ {
+ return sendCommand(FTPCmd.SIZE, parameters);
+ }
+
+ /***
* A convenience method to send the FTP SYST command to the server,
* receive the reply, and return the reply code.
*
Modified: commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java
URL: http://svn.apache.org/viewvc/commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java?rev=1788984&r1=1788983&r2=1788984&view=diff
==============================================================================
--- commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java (original)
+++ commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java Mon Mar 27 17:11:07 2017
@@ -3524,6 +3524,30 @@ implements Configurable
/**
+ * Issue the FTP SIZE command to the server for a given pathname.
+ * This should produce the size of the file.
+ *
+ * @param pathname the filename
+ *
+ * @return The size information returned by the server; {@code null} if there was an error
+ * @throws FTPConnectionClosedException
+ * If the FTP server prematurely closes the connection as a result
+ * of the client being idle or some other reason causing the server
+ * to send FTP reply code 421. This exception may be caught either
+ * as an IOException or independently as itself.
+ * @throws IOException If an I/O error occurs while either sending a
+ * command to the server or receiving a reply from the server.
+ */
+ public String getSize(String pathname) throws IOException
+ {
+ if (FTPReply.isPositiveCompletion(size(pathname))) {
+ return getReplyStrings()[0].substring(4); // skip the return code (e.g. 213) and the space
+ }
+ return null;
+ }
+
+
+ /**
* Issue the FTP MDTM command (not supported by all servers) to retrieve the last
* modification time of a file. The modification string should be in the
* ISO 3077 form "YYYYMMDDhhmmss(.xxx)?". The timestamp represented should also be in
Modified: commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPCmd.java
URL: http://svn.apache.org/viewvc/commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPCmd.java?rev=1788984&r1=1788983&r2=1788984&view=diff
==============================================================================
--- commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPCmd.java (original)
+++ commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPCmd.java Mon Mar 27 17:11:07 2017
@@ -54,6 +54,8 @@ public enum FTPCmd {
RNFR,
RNTO,
SITE,
+ /** @since 3.7 */
+ SIZE,
SMNT,
STAT,
STOR,