服务器端
package com.sherlock.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.Buffer;
public class ServerTset1 {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(11113);
while(true){
final Socket socket = server.accept();
new Thread(){
@Override
public void run() {
try{
InputStream is = socket.getInputStream();
PrintStream ps = new PrintStream(socket.getOutputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String filename = br.readLine();
File dir = new File("upload");
if(!dir.exists()){
dir.mkdir();
}
File file = new File(dir,filename);
if(file.exists()){
ps.println("存在");
return;
}else{
ps.println("不存在");
}
FileOutputStream fos = new FileOutputStream(file);
byte[] buf = new byte[1024];
int len;
while((len = is.read(buf)) != 0){
fos.write(buf, 0, len);
}
fos.close();
}catch(IOException e){
e.printStackTrace();
}finally {
if(socket != null){
try {
socket.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
}
}.start();
}
}
}
客户端
package com.sherlock.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class CilentTest1 {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1",11113);
PrintStream ps = new PrintStream(socket.getOutputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String filename = getFile();
File file = new File(filename);
//将文件名发送到服务器
ps.println(file.getName());
//从服务器读取数据
String msg = br.readLine();
if(msg.equals("存在")){
System.out.println("文件已存在" + file.getName());
socket.close();
return;
}
FileInputStream fis = new FileInputStream(file);
byte[] arr = new byte[1024];
int len ;
while((len = fis.read(arr)) != -1){
ps.write(arr,0,len);
}
System.out.println("end...");
fis.close();
socket.close();
}
public static String getFile() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个文件路径: ");
while(true) {
String str = sc.nextLine();
File file = new File(str);
if(!file.exists()) {
System.out.println("输入的文件不存在,请重新输入: ");
}else if(file.isDirectory()) {
System.out.println("输入的是一个目录,请重新输入: ");
}else {
return str;
}
}
}
}