读写工具类 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.IOException; public class MyUtil { /** * * @param bis 缓存字节输入流 * @param bos 缓存字节输出流 * @throws IOException 抛出异常,IO流读写过程中可能发生异常 */ public static void readAndWriter(BufferedInputStream bis, BufferedOutputStream bos) throws IOException { // 定义长度为1024的字节数组 byte [] bytes = new byte [1024]; int c = 0; while((c = bis.read(bytes))!=-1){//组合式写法 //写入到文件 bos.write(bytes, 0, c); } //关闭流,一定要关闭流,节约资源 bos.close(); bis.close(); } } 服务器 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class MyServer { public static void main(String[] args) throws IOException { //1.创建server,自定义端口号 ServerSocket server = new ServerSocket(1689); //2.监听 Socket socket = server.accept(); //3.通过socket读取网络文件 BufferedInputStream bis = new BufferedInputStream(socket.getInputStream()); //4.写入到本地文件 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E:/1.txt")); //5.边读边写 //读取的中转站 MyUtil.readAndWriter(bis,bos); } } 客户端 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.net.InetAddress; import java.net.Socket; public class MyClient { public static void main(String[] args) throws IOException { // 创建socket和server进行连接,连接服务器的端口号 Socket socket = new Socket(InetAddress.getLocalHost(),1689); // 读取文件 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("F:/Music/A Fine Keturns-- 《New World M.mp3")); // 写入到网络中 BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream()); MyUtil.readAndWriter(bis,bos); } }