java多线程实现文件上传(代码片段)

uoshuan uoshuan     2023-02-17     608

关键词:

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

/*
    客户端:数据来自于文本文件,接收服务器反馈
 */
public class ClientDemo 
    public static void main(String[] args) throws IOException 
        //创建客户端Socket对象
        Socket s = new Socket("192.168.1.66",10000);

        //封装文本文件的数据
        BufferedReader br = new BufferedReader(new FileReader("myNet\\\\InetAddressDemo.java"));
        //封装输出流写数据
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

        String line;
        while ((line=br.readLine())!=null) 
            bw.write(line);
            bw.newLine();
            bw.flush();
        

        s.shutdownOutput();

        //接收反馈
        BufferedReader brClient = new BufferedReader(new InputStreamReader(s.getInputStream()));
        String data = brClient.readLine(); //等待读取数据
        System.out.println("服务器的反馈:" + data);

        //释放资源
        br.close();
        s.close();
    


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

/*
    服务器:接收到的数据写入文本文件,给出反馈,代码用线程进行封装,为每一个客户端开启一个线程
 */
public class ServerDemo 
    public static void main(String[] args) throws IOException 
        //创建服务器Socket对象
        ServerSocket ss = new ServerSocket(10000);

        while (true) 
            //监听客户端连接,返回一个对应的Socket对象
            Socket s = ss.accept();
            //为每一个客户端开启一个线程
            new Thread(new ServerThread(s)).start();
        

//        ss.close();
    



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

public class ServerThread implements Runnable 
    private Socket s;

    public ServerThread(Socket s) 
        this.s = s;
    

    @Override
    public void run() 
        try 
            //接收数据写到文本文件
            BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
//            BufferedWriter bw = new BufferedWriter(new FileWriter("myNet\\\\Copy.java"));
            //解决名称冲突问题
            int count = 0;
            File file = new File("myNet\\\\Copy["+count+"].java");
            while (file.exists()) 
                count++;
                file = new File("myNet\\\\Copy["+count+"].java");
            
            BufferedWriter bw = new BufferedWriter(new FileWriter(file));

            String line;
            while ((line=br.readLine())!=null) 
                bw.write(line);
                bw.newLine();
                bw.flush();
            

            //给出反馈
            BufferedWriter bwServer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
            bwServer.write("文件上传成功");
            bwServer.newLine();
            bwServer.flush();

            //释放资源
            s.close();
         catch (IOException e) 
            e.printStackTrace();
        
    


rest实现多文件上传(代码片段)

目录1实例代码2遇到的坑3请求实例1实例代码以下代码都是经过测试可直接使用@ApiOperation(value="上传多文件",notes="上传多文件")@ApiResponses(@ApiResponse(code=503,message="服务不可用"),@ApiRespons 查看详情

利用ftp多线程上传文件(代码片段)

使用apachecommons-net-3.3首先我们需要有一个ftp服务器。直接上代码packagecom.ourpalm.resupgrade.util.ftp;importjava.io.BufferedInputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importja 查看详情

java多线程-管道流实现线程间通信(代码片段)

...数据进行操作,其中管道流是一种特殊的流,用于在不同线程间直接传送数据。一个线程发送数据到输出管道流,另一个线程从输入管道流中读取数据。通过使用管道,实现不同线程间的通信,而无须借助于类似临时文件之类的... 查看详情

java进阶多线程(代码片段)

文章目录一、多线程1、继承Thread类(方式一)1)实现多线程2)优缺点2、实现Runnable接口(方式二)1)实现多线程2)实现多线程(匿名内部类方式)3)优缺点3、实现Callable、FutureTask接口(方式三)1)实现多线程2... 查看详情

java多线程:线程间通信方式(代码片段)

文章目录Java线程通信wait()、notify()、notifyAll()API说明实现原理代码实现await()、signal()、signalAll()API说明实现原理代码实现BlockingQueueAPI说明实现原理代码实现Java线程通信在Java中线程通信主要有以下三种方式:wait()、notify()、noti... 查看详情

java多线程:线程间通信方式(代码片段)

文章目录Java线程通信wait()、notify()、notifyAll()API说明实现原理代码实现await()、signal()、signalAll()API说明实现原理代码实现BlockingQueueAPI说明实现原理代码实现Java线程通信在Java中线程通信主要有以下三种方式:wait()、notify()、noti... 查看详情

java多线程实现的三种方式(代码片段)

文章目录实现多线程方式一:继承Thread类方法介绍实现步骤代码演示思考问题实现多线程方式二:实现Runnable接口Thread构造方法实现步骤代码演示实现多线程方式三:实现Callable接口方法介绍实现步骤代码演示三种实现方式... 查看详情

java多线程的基本使用(代码片段)

文章目录1.多线程的概念2.线程的实现方式2.1继承Thread类实现多线程2.2实现Runnable接口实现多线程2.3实现Callable的多线程1.多线程的概念在程序执行的时候,即使没有开启多线程,Java后台也有多个线程在运行,最基本的... 查看详情

java多线程总结(代码片段)

Java多线程在Java的JDK开发包中,已经自带了对多线程技术的支持,可以很方便地进行多线程编程。实现多线程编程的方式有两种,一种是继承Thread类,另一种是实现Runnable接口。使用继承Thread类创建线程,最大的局限就是不能多... 查看详情

java大文件分片上传/多线程上传方案

这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数下面直接贴代码吧,一些难懂的我大部分都加上注释了:上传文件实体类:看得出来,... 查看详情

java多线程:copyonwritearraylist实现原理(代码片段)

文章目录CopyOnWriteArrayListCopyOnWriteArrayList概念CopyOnWriteArrayList原理基于COW机制CopyOnWriteArrayList源码分析问题思考CopyOnWriteArrayList优缺点CopyOnWriteArrayLis使用场景CopyOnWriteArrayListCopyOnWriteArrayList概念CopyOnWri 查看详情

java多线程:copyonwritearraylist实现原理(代码片段)

文章目录CopyOnWriteArrayListCopyOnWriteArrayList概念CopyOnWriteArrayList原理基于COW机制CopyOnWriteArrayList源码分析问题思考CopyOnWriteArrayList优缺点CopyOnWriteArrayLis使用场景CopyOnWriteArrayListCopyOnWriteArrayList概念CopyOnWri 查看详情

[django]modelform实现的多文件上传(代码片段)

实现效果代码models.pyfromdjango.dbimportmodelsimportuuidclassUUIDTools(object):"""uuidfunctiontools"""@staticmethoddefuuid1_hex():"""returnuuid1hexstringeg:23f87 查看详情

java多线程(代码片段)

多线程进程其他相关概念创建线程的两种方式为什么使用start()方法而不直接使用run()方法start()方法底层继承Thread和实现Rnnable的区别售票系统SellTicket01类继承Thread实现SellTicket02类实现Runnable接口线... 查看详情

不卡界面,实现文件上传(代码片段)

...:开始上传,上传中...(小点循环从1~3,与此同时开一个线程在后台执行文件上传),上传成功或异常。下面代码中关键知识点:invoke和begininvoke区别--Invoke()的作用是:在应用程序的主线程上执行指定的委托。privatevoidbutton2_Cli 查看详情

java多线程编程——多线程技能(代码片段)

第一章Java多线程技能文章目录第一章Java多线程技能前言一、进程和多线程概述二、使用多线程1.继承Thread类2.线程随机性的展现3.实现Runnable接口4.使用Runnable接口实现多线程的优点5.实例变量共享造成的非线程安全问题与解决方... 查看详情

java多线程实现窗口售票的功能(代码片段)

在这个程序中我们一共售卖1-100号票,一共有4个窗口,首先我们看程序如下packagecom.study.article1;/***@func多线程实现窗口卖票.*@author张俊强~*@time2017/10/2712:52**/classTicketimplementsRunnableprivateintticket=1000;p 查看详情

multipartfile实现单文件和多文件上传并带参数(代码片段)

什么是MultipartFileMultipartFile是spring类型,代表HTML中formdata方式上传的文件,包含二进制数据+文件名称。【来自百度知道】   方法总结byte[]getBytes()以字节数组的形式返回文件的内容。StringgetContentType返回文件的内容类型... 查看详情