import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class InternetSendFile {
public static String verify() throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
System.out.println("请输入要上传的文件的路径:");
String src = bufferedReader.readLine();
File file = new File(src);
if (file.exists() && file.isFile()) {
System.out.println("存在此文件");
return src;
} else {
System.out.println("不存在此文件,请重新输入!");
}
}
}
}
class Client2 {
// 客户端
// 2.提示输入要上传的文件路径File,验证路径是否有效,以及是否是文件夹,不存在或是文件夹都需要重新录入
// 3.发送文件名到服务器 File.getName
// 6.接收结果,如果存在给予提示,否则程序直接退出
// 7.如果不存在,定义FileInputStream读取文件,通过网络上传
public static void main(String[] args) throws IOException {
String src = InternetSendFile.verify();
Socket socket = new Socket("127.0.0.1", 12345);
OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();
BufferedReader br1 = new BufferedReader(new InputStreamReader(inputStream));
BufferedOutputStream bos = new BufferedOutputStream(outputStream);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入传入服务器的文件路径!");
String s = bufferedReader.readLine();
bos.write(s.getBytes());
bos.flush();
while (true) {
int flag = Integer.parseInt(br1.readLine());
if (flag == 0) {
System.out.println("可以传输文件了");
break;
} else {
System.out.println("存在此文件,请重新输入文件路径!");
s = bufferedReader.readLine();
bos.write(s.getBytes());
bos.flush();
}
}
FileInputStream fileInputStream = new FileInputStream(src);
BufferedInputStream bis = new BufferedInputStream(fileInputStream);
byte[] bytes = new byte[1024];
int length = 0;
String stt=null;
while ((length=bis.read(bytes))!=-1){
bos.write(bytes, 0, length);
bos.flush();
}
bos.close();
socket.close();
}
}
class Server2 {
// 1.建立多线程服务器
// 4.读取文件名
// 5.判断文件名是否存在,将结果返回给客户端
// 8.接收文件
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(12345);
new Thread() {
@Override
public void run() {
Socket accept = null;
try {
accept = serverSocket.accept();
InputStream inputStream = accept.getInputStream();
OutputStream outputStream = accept.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(outputStream));
PrintStream printStream = new PrintStream(outputStream);
BufferedInputStream bis = new BufferedInputStream(inputStream);
String destring = null;
while (true) {
byte[] bytes = new byte[1024];
int length = 0;
String des = null;
while ((length = bis.read(bytes)) != -1) {
des += new String(bytes, 0, length);
break;
}
destring = des.substring(4);
System.out.println(destring);
File file = new File(destring);
if (file.exists() && file.isFile()) {
//存在此文件,请修改文件名!
printStream.println(1);
printStream.flush();
} else {
//不存在此文件,请上传!
printStream.println(0);
printStream.flush();
break;
}
}
FileOutputStream fileOutputStream = new FileOutputStream(destring);
BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
byte[] bytes1 = new byte[1024];
int length2 = 0;
while ((length2 = bis.read(bytes1)) != -1) {
//打印输出是否读到文件数据
// String s = new String(bytes1, 0, length2);
// System.out.println(s);
bos.write(bytes1, 0, length2);
bos.flush();
}
bos.close();
bis.close();
accept.close();
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
}
使用java的流从客服端向服务端传送文件
最新推荐文章于 2022-08-04 14:44:37 发布