TCP通信练习4-上传文件名重复问题

UUID可以生成一个随机的字符串,而且字符串的内容是唯一的。那么我们可以就用这个类去生成一个随机的文件名字。利用下面的静态方法,该方法会给你返回一个UUID的对象。

java 复制代码
package com.lkbhua.TcpAppDemp.Test.test4;

import java.util.UUID;

public class UUIDTest {
    public static void main(String[] args) {
        // UUID演示用法
        UUID uuid = UUID.randomUUID();
        System.out.println(uuid);
        // 每一次生成的都不一样
        //  8f8cbe94-1761-4466-8acb-deae01a57c02
        // 不想要里面的"-"怎么办??
        // 把横杠替换成长度为0的字符串
        String str = uuid.toString().replace("-", "");
        System.out.println(str);
        // 908a086c8c5643a3b9f18d2828be05dd
    }
}
java 复制代码
package com.lkbhua.TcpAppDemp.Test.test4;


import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.UUID;

public class server {
    public static void main(String[] args) throws IOException {
        // TCP综合练习3------上传文件
        // 客服端: 将本地文件上传到服务器,接受服务器的反馈
        // 服务端: 接受文件并保存,返回上传成功

        // 1、创建ServerSocket对象并且绑定端口号
        ServerSocket ss = new ServerSocket(10000);
        UUID uuid = UUID.randomUUID();
        System.out.println("服务器启动了...");
        // 2、等待客户端连接
        Socket socket = ss.accept();
        System.out.println("一个客户端连接了...");
        // 3、读取数据,并保存到本地文件中
        BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
        String name = uuid.toString().replace("-", "");
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("lkb06-SocketNetCode\\aaa\\" + name));
        int len;
        byte[] bytes = new byte[1024];
        while ((len = bis.read(bytes)) != -1) {
            bos.write(bytes,0,len);
        }
        System.out.println("保存完毕...");
        // 4、回写数据
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
        bw.write("上传成功");
        bw.newLine();
        bw.flush();
        // 5、关闭资源
        socket.close();
        ss.close();
    }
}
java 复制代码
package com.lkbhua.TcpAppDemp.Test.test4;

import java.io.*;
import java.net.Socket;

public class client {
    public static void main(String[] args) throws IOException {
        // TCP综合练习3------上传文件
        // 客服端: 将本地文件上传到服务器,接受服务器的反馈
        // 服务端: 接受文件并保存,返回上传成功

        // 1、创建socket对象,并且连接服务器
        Socket socket = new Socket("127.0.0.1",10000);
        // 2、读取本地文件中的数据,并写到服务器当中
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("lkb06-SocketNetCode\\b.txt"));
        BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
        byte[] bytes = new byte[1024];
        int len;
        while ((len = bis.read(bytes)) != -1) {
            bos.write(bytes,0,len);
        }
        // 写出结束标记
        socket.shutdownOutput();
        // 3、接受服务器的回写数据
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String line = br.readLine();
        System.out.println(line);
        // 4、关闭流资源
        socket.close();
    }
}
相关推荐
释怀不想释怀5 分钟前
Linux网络基础(ip,域名)
linux·网络·tcp/ip
亓才孓6 分钟前
[Class的应用]获取类的信息
java·开发语言
开开心心就好14 分钟前
AI人声伴奏分离工具,离线提取伴奏K歌用
java·linux·开发语言·网络·人工智能·电脑·blender
子榆.18 分钟前
CANN 性能分析与调优实战:使用 msprof 定位瓶颈,榨干硬件每一分算力
大数据·网络·人工智能
80530单词突击赢27 分钟前
JavaWeb进阶:SpringBoot核心与Bean管理
java·spring boot·后端
驱动探索者1 小时前
U盘发展史
网络·cpu·u盘
爬山算法1 小时前
Hibernate(87)如何在安全测试中使用Hibernate?
java·后端·hibernate
青春给了代码1 小时前
基于WebSocket实现在线语音(实时+保存)+文字双向传输完整实现
网络·websocket·网络协议
北京耐用通信1 小时前
破解AGV多协议互联难题:耐达讯自动化Profinet转Devicenet网关如何实现高效协同
人工智能·科技·物联网·网络协议·自动化·信息与通信
云姜.1 小时前
线程和进程的关系
java·linux·jvm