从TFTPDemo看文件流FileInputStream/FileOutputStream的使用

时间:2022-04-26 08:38:23
    我这个人,脑子有点 笨,对java中的输入输出流的概念了解不透。
    今天,通过这个demo,算是真正理解了。
    这个TFTP的demo,首先是创建以TFTPClient对象,设置超时,打开网络连接。
    TFTPClient client = new TFTPClient();
    如果是接收文件,因为要把远程文件写到本地,所有要创建一个本地文件:
    File file = new File(localFile);
    然后,用FileOutputStream来包装(wrap)这个文件:
    FileOutputStream out = new FileOutputStream(file);
    接下来,调用client的接收文件的方法,把远程文件,通过FileOutputStream这样的流,写到本地:
    client.receiveFile(remoteFile, TFTP.BINARY,out,hostName);
    最后,关闭链接。

    如果是发送文件,只用把本地文件读取到FileInputStream这流中:
    FileInputStream input = new FileInputStream(localFile);
    接下来,调用client的发送文件的方法发送文件:
    client.sendFile(remoteFile, TFTP.BINARY, input, hostName);
    最后,关闭链接。
   
    完整代码:
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用package examples;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
/*
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * Copyright 2001-2005 The Apache Software Foundation
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 *
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * Licensed under the Apache License, Version 2.0 (the "License");
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * you may not use this file except in compliance with the License.
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * You may obtain a copy of the License at
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 *
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 *     
http://www.apache.org/licenses/LICENSE-2.0
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 *
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * Unless required by applicable law or agreed to in writing, software
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * distributed under the License is distributed on an "AS IS" BASIS,
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * See the License for the specific language governing permissions and
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * limitations under the License.
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 
*/

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
import java.io.File;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
import java.io.FileInputStream;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
import java.io.FileOutputStream;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
import java.io.IOException;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
import java.net.SocketException;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
import java.net.UnknownHostException;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
import org.apache.commons.net.tftp.TFTP;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
import org.apache.commons.net.tftp.TFTPClient;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
/***
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * This is an example of a simple Java tftp client using NetComponents.
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * Notice how all of the code is really just argument processing and
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * error handling.
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * <p>
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * Usage: tftp [options] hostname localfile remotefile
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * hostname   - The name of the remote host
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * localfile  - The name of the local file to send or the name to use for
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 *              the received file
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * remotefile - The name of the remote file to receive or the name for
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 *              the remote server to use to name the local file being sent.
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * options: (The default is to assume -r -b)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 *        -s Send a local file
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 *        -r Receive a remote file
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 *        -a Use ASCII transfer mode
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 *        -b Use binary transfer mode
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 * <p>
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用 **
*/

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
public class TFTPDemo
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用    
static final String USAGE =
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
"Usage: tftp [options] hostname localfile remote    file " +
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
"hostname   - The name of the remote host " +
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
"localfile  - The name of the local file to send or the name to use for " +
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
"the received file " +
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
"remotefile - The name of the remote file to receive or the name for " +
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
"the remote server to use to name the local file being sent. " +
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
"options: (The default is to assume -r -b) " +
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
"-s Send a local file " +
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
"-r Receive a remote file " +
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
"-a Use ASCII transfer mode " +
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
"-b Use binary transfer mode ";
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用    
public final static void main(String[] args)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用    
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
boolean receiveFile = true, closed;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
int transferMode = TFTP.BINARY_MODE, argc;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        String arg, hostname, localFilename, remoteFilename;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        TFTPClient tftp;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
// Parse options
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
        for (argc = 0; argc < args.length; argc++)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            arg 
= args[argc];
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
if (arg.startsWith("-"))
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
if (arg.equals("-r"))
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    receiveFile 
= true;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
else if (arg.equals("-s"))
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    receiveFile 
= false;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
else if (arg.equals("-a"))
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    transferMode 
= TFTP.ASCII_MODE;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
else if (arg.equals("-b"))
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    transferMode 
= TFTP.BINARY_MODE;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
else
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    System.err.println(
"Error: unrecognized option.");
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    System.err.print(USAGE);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    System.exit(
1);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
else
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
break;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
// Make sure there are enough arguments
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
        if (args.length - argc != 3)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            System.err.println(
"Error: invalid number of arguments.");
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            System.err.print(USAGE);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            System.exit(
1);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
// Get host and file arguments
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
        hostname = args[argc];
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        localFilename 
= args[argc + 1];
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        remoteFilename 
= args[argc + 2];
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
// Create our TFTP instance to handle the file transfer.
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
        tftp = new TFTPClient();
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
// We want to timeout if a response takes longer than 60 seconds
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
        tftp.setDefaultTimeout(60000);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
// Open local socket
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
        try
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            tftp.open();
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
catch (SocketException e)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            System.err.println(
"Error: could not open local UDP socket.");
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            System.err.println(e.getMessage());
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            System.exit(
1);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
// We haven't closed the local file yet.
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
        closed = false;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
// If we're receiving a file, receive, otherwise send.
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
        if (receiveFile)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            FileOutputStream output 
= null;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            File file;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            file 
= new File(localFilename);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
// If file exists, don't overwrite it.
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
            if (file.exists())
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.err.println(
"Error: " + localFilename + " already exists.");
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.exit(
1);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
// Try to open local file for writing
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
            try
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                output 
= new FileOutputStream(file);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
catch (IOException e)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                tftp.close();
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.err.println(
"Error: could not open local file for writing.");
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.err.println(e.getMessage());
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.exit(
1);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
// Try to receive remote file via TFTP
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
            try
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                tftp.receiveFile(remoteFilename, transferMode, output, hostname);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
catch (UnknownHostException e)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.err.println(
"Error: could not resolve hostname.");
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.err.println(e.getMessage());
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.exit(
1);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
catch (IOException e)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.err.println(
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    
"Error: I/O exception occurred while receiving file.");
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.err.println(e.getMessage());
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.exit(
1);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
finally
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
// Close local socket and output file
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
                tftp.close();
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
try
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    output.close();
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    closed 
= true;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
catch (IOException e)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    closed 
= false;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    System.err.println(
"Error: error closing file.");
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    System.err.println(e.getMessage());
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
if (!closed)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.exit(
1);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
else
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
// We're sending a file
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
            FileInputStream input = null;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
// Try to open local file for reading
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
            try
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                input 
= new FileInputStream(localFilename);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
catch (IOException e)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                tftp.close();
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.err.println(
"Error: could not open local file for reading.");
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.err.println(e.getMessage());
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.exit(
1);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
// Try to send local file via TFTP
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
            try
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                tftp.sendFile(remoteFilename, transferMode, input, hostname);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
catch (UnknownHostException e)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.err.println(
"Error: could not resolve hostname.");
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.err.println(e.getMessage());
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.exit(
1);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
catch (IOException e)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.err.println(
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    
"Error: I/O exception occurred while sending file.");
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.err.println(e.getMessage());
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.exit(
1);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
finally
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
// Close local socket and input file
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
                tftp.close();
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
try
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    input.close();
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    closed 
= true;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
catch (IOException e)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                
{
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    closed 
= false;
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    System.err.println(
"Error: error closing file.");
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                    System.err.println(e.getMessage());
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用            
if (!closed)
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用                System.exit(
1);
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用        }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用    }

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用
从TFTPDemo看文件流FileInputStream/FileOutputStream的使用}

从TFTPDemo看文件流FileInputStream/FileOutputStream的使用