客户端 源代码:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;
@SuppressWarnings("resource")
public class Test7_Client {
public static File getFilePath() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入文件路径:");
while(true) {
String line = sc.next();
File file = new File(line);
if(!file.exists()) {
System.out.println("文件路径不存在!请重输:");
} else if(file.isDirectory()) {
System.out.println("输入的是文件夹路径!请重输:");
} else {
return file;
}
}
}
/**
* InputStreamReader字符与字节转化的桥梁
* 为了达到最高效率,在 BufferedReader 内包装 了InputStreamReader
* 输出流用PrintStream 更方便
*/
public static void main(String[] args) throws IOException {
File file = getFilePath();
Socket socket = new Socket("127.0.0.1",12345);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintStream ps = new PrintStream(socket.getOutputStream());
ps.println(file.getName());
String result = br.readLine();
if ("文件已经存在!".equals(result)){
System.out.println("文件已经存在,请不要重复上传!");
socket.close();
return;
}
FileInputStream fis = new FileInputStream(file);
byte arr[] = new byte[8192];
int len;
while((len=fis.read()) != -1){
ps.write(arr, 0, len);
}
fis.close();
socket.close();
}
}