Java实现一个简单的文件上传案例示例代码

网友投稿 243 2023-03-31

Java实现一个简单的文件上传案例示例代码

java实现一个简单的文件上传案例

实现流程:

1.客户端从硬盘读取文件数据到程序中

2.客户端输出流,写出文件到服务端

3.服务端输出流,读取文件数据到服务端中

4.输出流,写出文件数据到服务器硬盘中

下面上代码

上传单个文件

服务器端

package FileUpload;

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 mhttp://ain(String[] args) throws IOException {

System.out.println("服务器端启动");

//创建一个服务器端对象

ServerSocket serverSocket = new ServerSocket(8888);

//使用accept获取socket对象

Socket accept = serverSocket.accept();

//使用字节输入流读取

InputStream inputStream = accept.getInputStream();

//创建一个字节输出流输出到本地

FileOutputStream fileOutputStream = new FileOutputStream("F:\\this\\copy1.jpg",true);

//创建一个数组循环读取

byte[] bytes = new byte[1024];

int len;

while ((len=inputStream.read(bytes))!=-1){

fileOutputStream.write(bytes,0,len);

}

System.out.println("执行完毕");

fileOutputStream.close();

inputStream.close();

}

}

客户端

package FileUpload;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.net.Socket;

public cladUKLOskss Client {

public static void main(String[] args) throws IOException {

//创建一个Socket对象

Socket socket = new Socket("127.0.0.1", 8888);

//读取本地文件

FileInputStream fileInputStream = new FileInputStream("F:\\1.jpeg");

//获取输出流向服务器写入数据

OutputStream outputStream = socket.getOutputStream();

//创建数组读取

byte[] bytes = new byte[1024];

int len;

//边都边写

while((len=fileInputStream.read(bytes))!=-1){

outputStream.write(bytes,0,len);

outputStream.flush();

}

//由于不会写入-1所以调用socket的shutdownOutput方法把前面的数据都写入并且正常终止后面的序列

socket.shutdownOutput();

System.out.println("文件发送完毕");

fileInputStream.close();

outputStream.close();

socket.close();

}

}

循环上传

客户端代码

package FileUpload;

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 socket = new Socket("127.0.0.1", 8888);

//读取本地文件

FileInputStream fileInputStream = new FileInputStream("F:\\1.jpeg");

//获取输出流向服务器写入数据

OutputStream outputStream = socket.getOutputStream();

//创建数组读取

byte[] bytes = new byte[1024];

int len;

//边都边写

while((len=fileInputStream.read(bytes))!=-1){

outputStream.write(bytes,0,len);

outputStream.flush();

}

//由于不会写入-1所以调用socket的shutdownOutput方法把前面的数据都写入并且正常终止后面的序列

socket.shutdownOutput();

System.out.println("文件发送完毕");

fileInputStream.close();

outputStream.close();

socket.close();

}

}

服务器端代码

package FileUpload;

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 {

System.out.println("服务器端启动");

//创建一个服务器端对象

ServerSocket serverSocket = new ServerSocket(8888);

//使用while()持续写入数据

while(true){

//使用accept获取socket对象

Socket accept = serverSocket.accept();

//Socket对象交给子线程处理,进行读写操作,

new Thread(() ->{

{

//使用字节输入流读取

InputStream inputStream = null;

try {

//文件名

String name = new String("F:\\this\\"+ System.currentTimeMillis()+"copy1.jpg" );

inputStream = accept.getInputStream();

//创建一个字节输出流输出到本地

FileOutputStream fileOutputStream = new FileOutputStream(name,true);

//创建一个数组循环读取

byte[] bytes = new byte[1024];

int len;

while ((len=inputStream.read(bytes))!=-1){

fileOutputStream.write(bytes,0,len);

}

System.out.println("执行完毕");

fileOutputStream.close();

inputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}).start();

}

}

}

循环输入无非就是增加了一个whttp://hile循环与一点多线程的知识,以上就是一个文件上传的一个简单案例,

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:api平台(2分钟之前已更新)
下一篇:万维易源(28秒之前已更新)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~