dfs 2003/03/15 13:45:06
Modified: net/src/java/org/apache/commons/net/ftp FTPClient.java
Log:
Added buffering of ASCII transfers in __storeFileStream(). Also added
an explicit buffer size for copying streams in __storeFile() and
retrieveFile() and added buffering of ASCII transfers in
retrieveFileStream().
Revision Changes Path
1.8 +34 -7
jakarta-commons/net/src/java/org/apache/commons/net/ftp/FTPClient.java
Index: FTPClient.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/net/src/java/org/apache/commons/net/ftp/FTPClient.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- FTPClient.java 6 Mar 2003 12:38:41 -0000 1.7
+++ FTPClient.java 15 Mar 2003 21:45:06 -0000 1.8
@@ -427,7 +427,10 @@
if ((socket = __openDataConnection(command, remote)) == null)
return false;
- output = new BufferedOutputStream(socket.getOutputStream());
+ // TODO: Buffer size may have to be adjustable in future to tune
+ // performance.
+ output = new BufferedOutputStream(socket.getOutputStream(),
+ Util.DEFAULT_COPY_BUFFER_SIZE);
if (__fileType == ASCII_FILE_TYPE)
output = new ToNetASCIIOutputStream(output);
// Treat everything else as binary for now
@@ -460,8 +463,19 @@
return null;
output = socket.getOutputStream();
- if (__fileType == ASCII_FILE_TYPE)
- output = new ToNetASCIIOutputStream(output);
+ if (__fileType == ASCII_FILE_TYPE) {
+ // We buffer ascii transfers because the buffering has to
+ // be interposed between ToNetASCIIOutputSream and the underlying
+ // socket output stream. We don't buffer binary transfers
+ // because we don't want to impose a buffering policy on the
+ // programmer if possible. Programmers can decide on their
+ // own if they want to wrap the SocketOutputStream we return
+ // for file types other than ASCII.
+ output = new BufferedOutputStream(output,
+ Util.DEFAULT_COPY_BUFFER_SIZE);
+ output = new ToNetASCIIOutputStream(output);
+
+ }
return new org.apache.commons.net.io.SocketOutputStream(socket, output);
}
@@ -1193,9 +1207,12 @@
if ((socket = __openDataConnection(FTPCommand.RETR, remote)) == null)
return false;
- input = new BufferedInputStream(socket.getInputStream());
+ // TODO: Buffer size may have to be adjustable in future to tune
+ // performance.
+ input = new BufferedInputStream(socket.getInputStream(),
+ Util.DEFAULT_COPY_BUFFER_SIZE);
if (__fileType == ASCII_FILE_TYPE)
- input = new FromNetASCIIInputStream(input);
+ input = new FromNetASCIIInputStream(input);
// Treat everything else as binary for now
try
{
@@ -1248,8 +1265,18 @@
return null;
input = socket.getInputStream();
- if (__fileType == ASCII_FILE_TYPE)
- input = new FromNetASCIIInputStream(input);
+ if (__fileType == ASCII_FILE_TYPE) {
+ // We buffer ascii transfers because the buffering has to
+ // be interposed between FromNetASCIIOutputSream and the underlying
+ // socket input stream. We don't buffer binary transfers
+ // because we don't want to impose a buffering policy on the
+ // programmer if possible. Programmers can decide on their
+ // own if they want to wrap the SocketInputStream we return
+ // for file types other than ASCII.
+ input = new BufferedInputStream(input,
+ Util.DEFAULT_COPY_BUFFER_SIZE);
+ input = new FromNetASCIIInputStream(input);
+ }
return new org.apache.commons.net.io.SocketInputStream(socket, input);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]