向服务器上传文件

//客户端
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.net.UnknownHostException;
import java.util.Scanner;

public class ClientDemo111 {

	public static void main(String[] args) throws Exception, IOException {
		File file = getFile();
		Socket s =new Socket("192.168.1.103",7878);
		BufferedReader br =new BufferedReader(new InputStreamReader(s.getInputStream()));
		PrintStream ps = new PrintStream(s.getOutputStream());
		ps.println(file.getName());
		String lineString = br.readLine();
		if(lineString.equals("存在")){
			System.out.println("文件已存在,请不要重复上传");
			s.close();
			return;
		}
		FileInputStream fis = new FileInputStream(file);
		int len;
		 byte[] arr =new byte[1024];
		 while((len =fis.read(arr))!=-1){
			 ps.write(arr, 0, len);
		 }
		 fis.close();
		 s.close();
		
	}

	private static File getFile() {
		System.out.println("请输入一个文件路径:");
		Scanner sc = new Scanner(System.in);
		while (true) {
			String line = sc.nextLine();
			File file = new File(line);
			if (!file.exists()) {
				System.out.println("你输入的文件不存在,重新输入");
			} else if (file.isDirectory()) {
				System.err.println("你输入的是文件路径,请重新输入");
			} else {
				sc.close();
				return file;
			}
		}

	}

}
//服务器端
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
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 com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;

public class ServerDemo222 {

	public static void main(String[] args) throws Exception {
		System.err.println("服务器已启动,绑定7878端口");
		ServerSocket serverSocket = new ServerSocket(7878);
		final File dir = new File("upload");
		dir.mkdir();
		while (true) {
			final Socket socket = serverSocket.accept();
			new Thread() {
				public void run() {
					try {
						InputStream is = socket.getInputStream();
						BufferedReader br = new BufferedReader(
								new InputStreamReader(is));
						PrintStream ps = new PrintStream(
								socket.getOutputStream());
						String name = br.readLine();
						File file = new File(dir, name);

						if (file.exists()) {
							ps.println("存在");
							socket.close();
							return;
						} else {
							ps.println("不存在");
						}
						String ip = socket.getInetAddress().getHostAddress();
						System.out.println(ip + "开始上传" + name + "文件");
						long start = System.currentTimeMillis();
						FileOutputStream fos;

						fos = new FileOutputStream(file);
						int len;
						byte[] arr = new byte[1024];
						while ((len = is.read(arr)) != -1) {
							fos.write(arr, 0, len);
						}
						// fos.close();
						// socket.close();
						long end = System.currentTimeMillis();
						
						System.out.println("文件上传结束:耗时" + (start - end) + "毫秒");
						fos.close();
						 socket.close();
					} catch (Exception e) {

						e.printStackTrace();
					}
				}
			}.start();
		}

	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值