java上传文件

亦凉 2021-10-19 11:44 482阅读 0赞

服务器端

  1. package cn.net.update;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.net.ServerSocket;
  7. import java.net.Socket;
  8. public class tcpserver {
  9. /** * 创建一个服务器serversocket对象,和系统要指定的端口号 * 使用serversocket中的方法accept,获取到请求的客户端socket * 使用socket对象中的方法getinputstream获取到网络字节输入流inputstream对象 * 判断路径是否存在 * 创建一个本地字节输出流fileoutputstream对象构造方法中绑定要输出的目的地 * 使用网络字节输入流inputstream对象中read方法读取客户端上传的文件 * 使用本地字节输出流fileoutputstream 获取到网络字节输出流outputstream对象 * 使用网络字节输出流 outputstream中的write给客户端写上传成功 * 释放资源 */
  10. public static void main(String[] args) throws IOException {
  11. ServerSocket server = new ServerSocket(8888);
  12. Socket socket = server.accept();//客户端获取到字节流数据
  13. InputStream is = socket.getInputStream();
  14. File file = new File("D:\\IdeaProjects\\basic-code\\day04-code\\src\\cn\\net\\update");
  15. if (!file.exists()){
  16. file.mkdirs();
  17. }
  18. FileOutputStream fos = new FileOutputStream(file+"\\2.txt");
  19. int len=0;
  20. byte[] bytes = new byte[1024];
  21. while ((len=is.read(bytes))!=-1){
  22. fos.write(bytes,0,len);
  23. }
  24. socket.getOutputStream().write("上传成功".getBytes());
  25. fos.close(); //读写文件关闭
  26. socket.close();//socket关闭
  27. server.close();//服务器关闭
  28. }
  29. }

客户端

  1. package cn.net.update;
  2. import java.io.FileInputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6. import java.net.Socket;
  7. public class tpccliebt {
  8. /** * 创建一个本地字节输入流fileinputstream对象构造方法中绑定要读取的数据源 * 创建一个客户端socket对象 构造方法中绑定服务器的ip地址和端口号 * 使用socket中方法getoutputstream 获取网络字节输出流outputstream * 使用本地字节输入流 fileinputputstream 对象中writef读取到文件上传服务器 */
  9. public static void main(String[] args) throws IOException {
  10. FileInputStream fis =new FileInputStream("D:\\IdeaProjects\\basic-code\\day04-code\\src\\cn\\net\\update\\1.TXT");
  11. Socket socket = new Socket("127.0.0.1",8888);
  12. OutputStream os = socket.getOutputStream();
  13. int len=0;
  14. byte[] bytes = new byte[1024];
  15. while ((len=fis.read(bytes))!=-1){
  16. os.write(bytes,0,len);
  17. }
  18. socket.shutdownOutput();
  19. // 回血数据
  20. InputStream is = socket.getInputStream();
  21. while ((len=is.read(bytes))!=-1){
  22. System.out.println(new String(bytes,0,len));
  23. }
  24. fis.close();
  25. socket.close();
  26. }
  27. }

优化过后的服务端

  1. package cn.net.update;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.net.ServerSocket;
  7. import java.net.Socket;
  8. import java.util.Random;
  9. public class tcpserver {
  10. /** * 创建一个服务器serversocket对象,和系统要指定的端口号 * 使用serversocket中的方法accept,获取到请求的客户端socket * 使用socket对象中的方法getinputstream获取到网络字节输入流inputstream对象 * 判断路径是否存在 * 创建一个本地字节输出流fileoutputstream对象构造方法中绑定要输出的目的地 * 使用网络字节输入流inputstream对象中read方法读取客户端上传的文件 * 使用本地字节输出流fileoutputstream 获取到网络字节输出流outputstream对象 * 使用网络字节输出流 outputstream中的write给客户端写上传成功 * 释放资源 */
  11. public static void main(String[] args) throws IOException {
  12. ServerSocket server = new ServerSocket(8888);
  13. while (true){
  14. Socket socket = server.accept();//客户端获取到字节流数据
  15. new Thread(new Runnable() {
  16. @Override
  17. public void run() {
  18. try {
  19. InputStream is = socket.getInputStream();
  20. File file = new File("D:\\IdeaProjects\\basic-code\\day04-code\\src\\cn\\net\\update");
  21. if (!file.exists()){
  22. file.mkdirs();
  23. }
  24. String filename = "itcast"+System.currentTimeMillis()+new Random(999999)+".txt";
  25. FileOutputStream fos = new FileOutputStream(file+"\\"+filename);
  26. int len=0;
  27. byte[] bytes = new byte[1024];
  28. while ((len=is.read(bytes))!=-1){
  29. fos.write(bytes,0,len);
  30. }
  31. socket.getOutputStream().write("上传成功".getBytes());
  32. fos.close(); //读写文件关闭
  33. socket.close();//socket关闭
  34. }catch (IOException e){
  35. System.out.println(e);
  36. }
  37. }
  38. }).start();
  39. }
  40. // server.close();//服务器关闭
  41. }
  42. }

发表评论

表情:
评论列表 (有 0 条评论,482人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java文件

    一、前言       在项目中遇到了上传文件的功能,虽然这个功能还是比较思路清楚的,在java中Struts2已经为我们设计好了File这个类,所以我们需要做的就是把所需