A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

package com.itheima_day19;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
//将一个文件中的内容拷贝到另一个文件中
public class Client {
        public static void main(String[] args) throws IOException {
                Socket socket = new Socket("127.0.0.1",6666);        //创建套接字对象,与自己相连,端口号为6666
                File file = new File("a.txt");                                        //提供文件,用于操作,(将a.txt中的内容拷贝到另一个文件中)
                int len = (int)file.length();                                        //获取a.txt文件的大小,即文件所占字节数
                OutputStream os = socket.getOutputStream();                //获取Socket套接字的输出流
                os.write((len+"").getBytes());                                        //将字节数先从int类型转换为String类型然后再转为byte[]数组类型写出去
               
                FileInputStream fis = new FileInputStream(file);//创建字节输入流对象,并将file传入
                ByteArrayOutputStream baos = new ByteArrayOutputStream();//创建内存输出流对象
                int c ;                                                                                        //定义一个变量c,目的是为了后续fis读取时防止漏掉东西
                while((c = fis.read()) != -1) {                                        //用while循环读取file文件中的内容,这是一个一个读的
                        baos.write(c);                                                                //将读到的内容写入内存输出流,因为上面试一个一个都的,所以这里也是一个一个写入的
                }
               
                byte[] bytesData = baos.toByteArray();                        //将内存输出流中的内容转化为字节数组类型
                os.write(bytesData);                                                        //将bytesData通过os写出
               
                fis.close();                                                                        //关闭字节输入流
                socket.close();                                                                        //关闭socket对象,不用os.close(),原因你懂得
        }
}


package com.itheima_day19;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
        public static void main(String[] args) throws IOException {
                ServerSocket server = new ServerSocket(6666);                        //创建ServerSocket对象,传入端口号6666
                Socket socket = server.accept();                                                //同意连接并侦听
                InputStream is = socket.getInputStream();                                //获取Socket的输入流
                byte[] bytes = new byte[1024];                                                        //创建字节数组bytes,大小为1024,用于接收Client传来的字节数大小的值
                int len = is.read(bytes);                                                                //将Client传来的字节数大小的值存入bytes中
                String sLen = new String(bytes,0,len);                                        //将bytes中存储的byte类型的字节数转化为String类型
                int fileLength = Integer.parseInt(sLen);                                //再将String类型的字节数转化为int类型
                byte[] bytesData = new byte[fileLength];                                //创建fileLength长度的字节数组,用于接收Client中a.txt文件的中的内容
               
                FileOutputStream fos = new FileOutputStream("b.txt");        //创建字节输出流对象,将目的地文件b.txt传入,如果存在b.txt那么就复制进去,如果不存在,就创建一个并复制内容
                is.read(bytesData);                                                                                //读取Client传过来的文本内容,并存储到bytesData数组中
                fos.write(bytesData);                                                                        //将bytesData数组中的内容写入到b.txt中
               
                System.out.println("Done!");                                                        //完成!
                               
                fos.close();                                                                                        //关闭字节输出流
                socket.close();                                                                                        //关闭套接字对象
                server.close();                                                                                        //关闭server
               
        }
}


4 个回复

倒序浏览
马克,还没学到这{:2_31:}
回复 使用道具 举报
{:3_62:},很不错,已学习.........,大神膜拜,多多交流!!!!!!!!!!
回复 使用道具 举报
马克一下
回复 使用道具 举报
Baymax的悲伤 发表于 2016-7-26 23:06
,很不错,已学习.........,大神膜拜,多多交流!!!!!!!!!!

新人好好学习。你也会像我一样!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马