客户端
package com.sun;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.InputStream;
importjava stream java.io.RandomAccessFile;
import java.InetAddress;
import java.Socket;
public class FileClient {
    public static void main(String[] args) throws Exception {
        // 使用本地文件系统接受网络数据并存为新文件
        File file = new File("d:\\def.doc");
        ateNewFile();//地创建一个新的空文件
        RandomAccessFile raf = new RandomAccessFile(file, "rw");
        // 通过Socket连接文件服务器
        Socket server = new Socket(InetAddress.getLocalHost(), 60000);
        // 创建网络接受流接受服务器文件数据
        InputStream netIn = InputStream();
        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();
    }
}
服务端
package com.sun;
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.ServerSocket;
import java.Socket;
public class FileServer {
    public static void main(String[] args) throws Exception {
        String fileName = "d:\\abc.doc";
        File file = new File(fileName);// 创建文件流用来读取文件中的数据
        FileInputStream fos = new FileInputStream(file);
        ServerSocket ss = new ServerSocket(60000);// 创建网络服务器接受客户请求
        Socket client = ss.accept();
        OutputStream netOut = OutputStream();// 创建网络输出流并提供数据包装器
        OutputStream doc = new DataOutputStream(new BufferedOutputStream(netOut));
        // 创建文件读取缓冲区
        byte[] buf = new byte[2048];
        int num = ad(buf);
        while (num != (-1)) {// 是否读完文件
            doc.write(buf, 0, num);// 把文件数据写出网络缓冲区
            doc.flush();// 刷新缓冲区把数据写往客户端
            num = ad(buf);// 继续从文件中读取数据
        }
        fos.close();
        doc.close();
    }
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。