如题

解决方案 »

  1.   

    可能没说清楚   
    服务端
    import java.io.*;
    import java.net.*;
    class FileServer{
        public static void main(String[] args)throws Exception{
            //创建文件流用来读取文件中的数据
            
            String responseline;
            
            responseline = "aaa.txt";  //文件名问你要传输的文件
            
            File file=new File(responseline);
            
            System.out.println("发送的文件是:\n"+responseline);
            
            FileInputStream fos=new FileInputStream(file);        //创建网络服务器接受客户请求
            ServerSocket ss=new ServerSocket(3108);
            
            System.out.println("Server listen on:"+ss.getLocalPort());
            
            Socket client=ss.accept();        //创建网络输出流并提供数据包装器
            OutputStream netOut=client.getOutputStream();
            
            OutputStream doc=new DataOutputStream(new BufferedOutputStream(netOut));        //创建文件读取缓冲区
            byte[] buf=new byte[2048];
            
            int num=fos.read(buf);
            
            while(num!=(-1)){//是否读完文件
                  
                  doc.write(buf,0,num);//把文件数据写出网络缓冲区
                  
                  doc.flush();//刷新缓冲区把数据写往客户端
                  
                  num=fos.read(buf);//继续从文件中读取数据
            }
            
            fos.close();
            
            doc.close();
        }
    }
      

  2.   

    客户端:
    import java.io.*;
    import java.net.*;class FileClient{
        
        public static void main(String[] args)throws Exception{
            //使用本地文件系统接受网络数据并存为新文件
            
            File file=new File("newFile.txt");//生成的文件名
            
            file.createNewFile();
            
            RandomAccessFile raf=new RandomAccessFile(file,"rw");
            
            // 通过Socket连接文件服务器
            Socket server=new Socket("0.0.0.0",3108);    //ip地址
            
            //Socket server=new Socket(InetAddress.getLocalHost(),3108);
            
            //创建网络接受流接受服务器文件数据 
            InputStream netIn=server.getInputStream();
            
            InputStream in=new DataInputStream(new BufferedInputStream(netIn));
            
            //创建缓冲区缓冲网络数据
            byte[] buf=new byte[2048];
            
            int num=in.read(buf);         
            while(num!=(-1)){//是否读完所有数据
                  
                  raf.write(buf,0,num);//将数据写往文件
                  
                  raf.skipBytes(num);//顺序写文件字节
                  
                  num=in.read(buf);//继续从网络中读取文件
            }
            in.close();
            
            raf.close();
        }
    }