Author: sebb Date: Wed Feb 8 14:09:10 2017 New Revision: 1782174 URL: http://svn.apache.org/viewvc?rev=1782174&view=rev Log: Split into smaller methods. Show sent and received counts
Modified: commons/proper/net/trunk/src/main/java/examples/ftp/TFTPExample.java Modified: commons/proper/net/trunk/src/main/java/examples/ftp/TFTPExample.java URL: http://svn.apache.org/viewvc/commons/proper/net/trunk/src/main/java/examples/ftp/TFTPExample.java?rev=1782174&r1=1782173&r2=1782174&view=diff ============================================================================== --- commons/proper/net/trunk/src/main/java/examples/ftp/TFTPExample.java (original) +++ commons/proper/net/trunk/src/main/java/examples/ftp/TFTPExample.java Wed Feb 8 14:09:10 2017 @@ -17,6 +17,7 @@ package examples.ftp; +import java.io.Closeable; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -108,150 +109,161 @@ public final class TFTPExample // We want to timeout if a response takes longer than 60 seconds tftp.setDefaultTimeout(60000); - // Open local socket + // We haven't closed the local file yet. + closed = false; + + // If we're receiving a file, receive, otherwise send. + if (receiveFile) + { + closed = receive(transferMode, hostname, localFilename, remoteFilename, tftp); + } else { + // We're sending a file + closed = send(transferMode, hostname, localFilename, remoteFilename, tftp); + } + + System.out.println("Recd: "+tftp.getTotalBytesReceived()+" Sent: "+tftp.getTotalBytesSent()); + + if (!closed) { + System.out.println("Failed"); + System.exit(1); + } + + System.out.println("OK"); + } + + private static boolean send(int transferMode, String hostname, String localFilename, String remoteFilename, + TFTPClient tftp) { + boolean closed; + FileInputStream input = null; + + // Try to open local file for reading try { - tftp.open(); + input = new FileInputStream(localFilename); } - catch (SocketException e) + catch (IOException e) { - System.err.println("Error: could not open local UDP socket."); + tftp.close(); + System.err.println("Error: could not open local file for reading."); System.err.println(e.getMessage()); System.exit(1); } - // We haven't closed the local file yet. - closed = false; + open(tftp); - // If we're receiving a file, receive, otherwise send. - if (receiveFile) + // Try to send local file via TFTP + try + { + tftp.sendFile(remoteFilename, transferMode, input, hostname); + } + catch (UnknownHostException e) + { + System.err.println("Error: could not resolve hostname."); + System.err.println(e.getMessage()); + System.exit(1); + } + catch (IOException e) + { + System.err.println("Error: I/O exception occurred while sending file."); + System.err.println(e.getMessage()); + System.exit(1); + } + finally { - FileOutputStream output = null; - File file; + // Close local socket and input file + closed = close(tftp, input); + } - file = new File(localFilename); + return closed; + } - // If file exists, don't overwrite it. - if (file.exists()) - { - System.err.println("Error: " + localFilename + " already exists."); - System.exit(1); - } + private static boolean receive(int transferMode, String hostname, String localFilename, String remoteFilename, + TFTPClient tftp) { + boolean closed; + FileOutputStream output = null; + File file; - // Try to open local file for writing - try - { - output = new FileOutputStream(file); - } - catch (IOException e) - { - tftp.close(); - System.err.println("Error: could not open local file for writing."); - System.err.println(e.getMessage()); - System.exit(1); - } + file = new File(localFilename); - // Try to receive remote file via TFTP - try - { - tftp.receiveFile(remoteFilename, transferMode, output, hostname); - } - catch (UnknownHostException e) - { - System.err.println("Error: could not resolve hostname."); - System.err.println(e.getMessage()); - System.exit(1); - } - catch (IOException e) - { - System.err.println( - "Error: I/O exception occurred while receiving file."); - System.err.println(e.getMessage()); - System.exit(1); - } - finally - { - // Close local socket and output file - tftp.close(); - try - { - if (output != null) { - output.close(); - } - closed = true; - } - catch (IOException e) - { - closed = false; - System.err.println("Error: error closing file."); - System.err.println(e.getMessage()); - } - } + // If file exists, don't overwrite it. + if (file.exists()) + { + System.err.println("Error: " + localFilename + " already exists."); + System.exit(1); + } - if (!closed) { - System.exit(1); - } + // Try to open local file for writing + try + { + output = new FileOutputStream(file); + } + catch (IOException e) + { + tftp.close(); + System.err.println("Error: could not open local file for writing."); + System.err.println(e.getMessage()); + System.exit(1); + } - } else { - // We're sending a file - FileInputStream input = null; + open(tftp); - // Try to open local file for reading - try - { - input = new FileInputStream(localFilename); - } - catch (IOException e) - { - tftp.close(); - System.err.println("Error: could not open local file for reading."); - System.err.println(e.getMessage()); - System.exit(1); - } + // Try to receive remote file via TFTP + try + { + tftp.receiveFile(remoteFilename, transferMode, output, hostname); + } + catch (UnknownHostException e) + { + System.err.println("Error: could not resolve hostname."); + System.err.println(e.getMessage()); + System.exit(1); + } + catch (IOException e) + { + System.err.println( + "Error: I/O exception occurred while receiving file."); + System.err.println(e.getMessage()); + System.exit(1); + } + finally + { + // Close local socket and output file + closed = close(tftp, output); + } - // Try to send local file via TFTP - try - { - tftp.sendFile(remoteFilename, transferMode, input, hostname); - } - catch (UnknownHostException e) - { - System.err.println("Error: could not resolve hostname."); - System.err.println(e.getMessage()); - System.exit(1); - } - catch (IOException e) - { - System.err.println( - "Error: I/O exception occurred while sending file."); - System.err.println(e.getMessage()); - System.exit(1); - } - finally - { - // Close local socket and input file - tftp.close(); - try - { - if (input != null) { - input.close(); - } - closed = true; - } - catch (IOException e) - { - closed = false; - System.err.println("Error: error closing file."); - System.err.println(e.getMessage()); - } - } + return closed; + } - if (!closed) { - System.exit(1); + private static boolean close(TFTPClient tftp, Closeable output) { + boolean closed; + tftp.close(); + try + { + if (output != null) { + output.close(); } - + closed = true; } + catch (IOException e) + { + closed = false; + System.err.println("Error: error closing file."); + System.err.println(e.getMessage()); + } + return closed; + } + private static void open(TFTPClient tftp) { + try + { + tftp.open(); + } + catch (SocketException e) + { + System.err.println("Error: could not open local UDP socket."); + System.err.println(e.getMessage()); + System.exit(1); + } } }