先建立文本,在控制台上进行文本输入,再将其复制到其他盘

此次程序的需求:
先当前目录创建文件,并在控制台上输入文件内容,当输入“over”的时候结束程序
结束程序后,再进行对文本的复制,将创建好的文件,复制到C盘。

在此程序中,重新复习了关于文件的创建,和文件的读写,以及关于缓冲区的使用,还有键盘的录入。在此程序中,也遇到了一些问题光==和equals之间在if语句之间的问题,在之前的博客有写有。还有一些基础问题,就是关于socket 的函数,s.shutdownOutput();的使用,每能根据其具体情况进行使用,此函数是进行判断是否写完了文本内容,字节流传输是否传输完了。还有关于一些newline()函数的问题。
附上代码
服务端:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class transTextServer {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        /*
         * 在客户端创建好的.txt文件,并写入数据,服务端将其数据传送到其他盘
         * 1.创建服务端的socket
         * 2.接收
         * 3.对指定的文件名,进行读取流
         * 4.对文件进行写入到其他盘
         * 5.关闭流。
         * 
         * */
        //1
        ServerSocket ss = new ServerSocket(10007);

        //2
        Socket s = ss.accept();

        //获取IP
        String ip = s.getInetAddress().getHostAddress();
        System.out.println(ip+".......");

        //创建好文本,并进行修饰
        BufferedWriter bufr = new BufferedWriter(new FileWriter("C:\\客户端写入的数据.txt"));

        //3.对指定的文件名进行读取
        BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));

        //4对指定的文件进行写入其他盘
        String line = null;
        while((line = bufin.readLine())!=null) {
            bufr.write(line);//对文件进行写入操作
            bufr.newLine();//对有换行的进行换行
        }

        bufr.close();
        s.close();
        ss.close();

    }

}

客户端:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class transTextClient {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        /*
         * 对客户端新建的文本文件,然后进行撰写,将撰写好的文本文件利用服务端进行复制到其他盘
         * 1.创建Socket
         * 2.创建文本文件
         * 3.对创建的文本文件进行写入功能
         * 4.对socket的输出流进行封装
         * 5.不断输出
         * 6.关闭流
         * */
        //1
        Socket s = new Socket("192.168.1.103",10007);

        //2
        BufferedWriter bufw = new BufferedWriter(new FileWriter("transTextClient11111111111.txt"));

        //3.对创建的文本文件进行写入功能
        BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));//从键盘写入数据

        String line;
        while(true) {
            line = bufr.readLine();
            if(line.equals("over")) {//问题::::之前是用==号,当输入over的时候却不能跳出循环。
                System.out.println("输出");
                break;
            }
            bufw.write(line);
            bufw.newLine();//写入其,进行对输入的换行。
        }
        bufw.flush();//进行刷新,将刷新数据
        bufw.close();//关闭流//当没有刷新的时候,不进行数据显示。

        //4.对写完的数据。进行传输,对数据的输出流进行封装
        PrintWriter pw = new PrintWriter(s.getOutputStream(),true);//true,是不断刷新

        //5,不断输出,,读取文本文件的数据,然后进行封装
        BufferedReader buftrans = new BufferedReader(new FileReader("transTextClient11111111111.txt"));//新建一个读取文件的,进行对文本的读取

        //对文本进行读取,并传送给输出流
        String str = null;
        while((str = buftrans.readLine())!=null) {
            pw.println(str);//将读取的数据发送给服务端
        }
        //告诉服务端已经写完了。
        s.shutdownOutput();//应该写在客户端。

        System.out.println("结束复制");
        buftrans.close();
        s.close();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值