日期:2014-05-20  浏览次数:20781 次

JAVA编程问题求助(网络点对点文件传输程序的修改)
    本人在敲一个网络点对点文件传输与远程执行程序的代码时发现:书上的源代码是要分别运行在两台电脑上实现文件传输,但是本人目前就一台电脑,因此想尝试一下改一下代码实现自己传送文件,自己接收文件,因此,我用代码在要传输的源文件的同一目录下新建了一个不同名的文本文档,想接收自己电脑传出去的文件,并将输入流写到新建的不同名的文本文档,同时自动以记事本打开这个文件。结果发现有文件传送成功的提示,但是在新建的文件不会自动打开,并且手动打开后发现接收的输入流并没有成功写入,同时还有抛出异常。
    下面是我运行结果的截图,同时还有修改后的代码,请大家帮我看看是什么原因导致的?麻烦大家了!


import java.lang.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import javax.swing.*;

public class j03130401 extends Frame implements Runnable {     
File recFileDir;        //欲接收的文件所含的上层目录
File F1=new File("testDir\\readme2.txt");
    String reFile;           //欲接收的文件
boolean canRecFile;         //是否可以接收文件
//===========================
    String sendFile;         //欲发送的文件

    boolean canSendFile;   //是否可以发送文件
    //============================
    Label L1,L2,L3,L4,L5;
    TextField T1,T2,T3,T4;
    List list1;
    Button B1;
    
    public j03130401(){
    this.setLayout(null);
    this.setBounds(200, 200, 370, 400);
    this.setTitle("TCP点对点文件传输");
    this.addWindowListener(new WindowAdapter(){
     public void windowClosing(WindowEvent e){
     System.exit(0);
     }
    });
    //==============================================
    L1=new Label("对方IP:");
    L1.setBounds(10, 25, 55, 25);
    L1.setBackground(new Color(255,193,255));
    this.add(L1);
    
    T1=new TextField("192.168.1.100");
    T1.setBounds(70,25,110,25);
    this.add(T1);
    
    L2=new Label("对方接收的PORT:");
    L2.setBounds(10, 60,120, 25);
    L2.setBackground(new Color(255,193,255));
    this.add(L2);
    
    T2=new TextField("2222");
    T2.setBounds(135, 60, 55, 25);
    this.add(T2);
    
    L3=new Label("欲传送的文件:");
    L3.setBounds(10,95,95,25);
    L3.setBackground(new Color(255,193,255));
    this.add(L3);
    
    T3=new TextField("testDir\\readme.txt");
    T3.setBounds(105,95,200,25);
    this.add(T3);
    
    B1=new Button("传送");
    B1.setBounds(310, 95, 50, 25);
    B1.addActionListener(new myActionListener());
    this.add(B1);
    
    L4=new Label("本地收的PORT:");
    L4.setBounds(10, 150, 120, 25);
    L4.setBackground(new Color(255,193,255));
    this.add(L4);
    
    T4=new TextField("2222");
    T4.setBounds(135, 150, 55, 25);
    T4.setEnabled(false);
    this.add(T4);
    
    L5=new Label("接收文件存储至:");
    L5.setBounds(10, 185, 120, 25);
    L5.setBackground(new Color(255,193,255));
    this.add(L5);
    
    list1=new List();
    list1.setBounds(10, 220, 350, 160);
    this.add(list1);
    //======================================
    this.setBackground(new Color(220,255,255));
    this.setVisible(true);
    }  //public j03130401()   end
    
    public static void main(String[] args){
     File F1=new File("testDir\\readme2.txt");
     try{
     F1.createNewFile();
     }
     catch(Exception e){
         JOptionPane.showMessageDialog(null,"错误1");
     }
    
    
     new Thread(new j03130401()).start();
    }
    
    private boolean reFileName(ServerSocket serverTcp) throws IOException{