1. 程式人生 > >JAVA基礎程式設計101--檔案上傳

JAVA基礎程式設計101--檔案上傳

一、技術點:IO流、套接字
二、案例程式碼
1、客戶端
package com.mollen.upload;

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

/**
* @ClassName:  com.mollen.upload.Client
* @Auther:     Mollen
* @CreateTime: 2018-09-11  08:36:31
* @Description:
*              檔案上傳客戶端
*/
public class Client {
   public static void main(String[] args) throws
IOException { //1.建立socke物件 Socket client = new Socket("127.0.0.1",6666); //2.建立讀入資料流物件 FileInputStream fis = new FileInputStream("H:\\1001.avi"); //3.獲取寫出資料流 OutputStream os = client.getOutputStream(); //4.讀入客戶端本地檔案,寫出到資料流 int len = 0; byte[] bytes = new
byte[10240]; while((len= fis.read(bytes))!=-1){ os.write(bytes,0,len); } //寫出結束標誌 client.shutdownOutput(); //讀取服務端回執資訊 BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream())); System.out.println(br.readLine()); //釋放資源
fis.close(); os.close(); client.close(); } }

2、服務端

package com.mollen.upload;

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

/**
* @ClassName:  com.mollen.upload.Server
* @Auther:     Mollen
* @CreateTime: 2018-09-11  08:36:53
* @Description:
*              檔案上傳服務端
*/
public class Server {
   public static void main(String[] args) throws IOException {
       //1.建立serversocket物件
       ServerSocket server = new ServerSocket(6666);
       while(true) {
           //2.監聽客戶端
           Socket client = server.accept();
           //3.資料來源
           InputStream is = client.getInputStream();
           //4.資料目的地
           FileOutputStream fos = new FileOutputStream("E:\\upload\\" + System.currentTimeMillis() + ".avi");
           //5.讀入資料流,寫出到伺服器本地磁碟
           int len = 0;
           byte[] bytes = new byte[10240];
           while ((len = is.read(bytes)) != -1) {
               fos.write(bytes, 0, len);
           }
           //提示資訊
           System.out.println("接受完成!");
           //回執資訊
           client.getOutputStream().write("上傳成功!".getBytes());
           //釋放資源
           is.close();
           fos.close();
           client.close();
       }
   }
}
三、注意事項

1、資料運輸路徑: 客服端磁碟–>(讀入)–>(寫出)–>資料流–>(讀入)–>(寫出)–>客戶端磁碟。 2、客戶端建立Socket,服務端建立ServerSocket。 3、資料寫出完畢必須有結束標誌。 4、測試先啟動服務端再啟動客戶端。