JAVA基礎程式設計101--檔案上傳
阿新 • • 發佈:2018-12-09
一、技術點: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、測試先啟動服務端再啟動客戶端。