栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

本地模拟下载文件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

本地模拟下载文件

服务端 开启
package com.zking.test2;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

//服务端
public class FileServer {

	public static void main(String[] args) throws Exception {
		System.out.println("------服务端------------");
		// 开启服务器
		ServerSocket ss = new ServerSocket(7979);
		// 等待客户端丽连接
		Socket sk = ss.accept();
		System.out.println("已连接");

		// 输入流 读取客户端发送过来的消息
		InputStream is = sk.getInputStream();
		InputStreamReader isr = new InputStreamReader(is);
		BufferedReader br = new BufferedReader(isr);

		// 资源路径
		String readLine = br.readLine();

		// File
		File file = new File(readLine);
		FileInputStream fis = null;
		InputStreamReader isr2 = null;
		BufferedReader br2 = null;

		// 写进网络中
		OutputStream os = sk.getOutputStream();
		OutputStreamWriter osw = new OutputStreamWriter(os);
		BufferedWriter bw = new BufferedWriter(osw);

		if (file.exists()) {// 存在
			// 读取服务器中指定资源的内容
			fis = new FileInputStream(file);
			isr2 = new InputStreamReader(fis);
			br2 = new BufferedReader(isr2);
			String str = "";
			while (null != (str = br2.readLine())) {
				bw.write(str);
				bw.newline();
				bw.flush();
			}
		} else {// 文件资源路径不存在
			bw.write("文件查找不到");
			bw.newline();
			bw.flush();
		}

		// 关闭所有资源
		bw.close();
		osw.close();
		os.close();
		if (null != br2) {
			br2.close();
		}
		if (null != isr2) {
			isr2.close();
		}
		if (null != fis) {
			fis.close();
		}
		br.close();
		isr.close();
		is.close();
		ss.close();

	}

}

客户端上传下载路径

package com.zking.test2;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

//客户端
public class FileClient {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		// 开启客户端
		Socket sk = new Socket("127.0.0.1", 7979);
		System.out.println("OK");
		System.out.println("请输入要下载的资源路径: ");
		String filePath = sc.next();

		// 将资源路径写进网络中
		OutputStream os = sk.getOutputStream();
		OutputStreamWriter osw = new OutputStreamWriter(os);
		BufferedWriter bw = new BufferedWriter(osw);

		bw.write(filePath);
		bw.newline();
		bw.flush();

		// 接收服务端发送的内容
		InputStream inputStream = sk.getInputStream();
		InputStreamReader isr = new InputStreamReader(inputStream);
		BufferedReader br = new BufferedReader(isr);

		// 得到文件的名称
		String fileName = filePath.substring(filePath.lastIndexOf("/"));

		// 读取到内容后 通过文件写入本地中
		FileOutputStream fos = new FileOutputStream("D:\zking\" + fileName);
		BufferedWriter bw2 = new BufferedWriter(new OutputStreamWriter(fos));

		String str = br.readLine();
		if ("文件查找不到".equals(str)) {
			System.out.println("资源不存在");
		} else {
			System.out.println(str);
			bw2.write(str);
			bw2.newline();
			bw2.flush();
			while (null != (str = br.readLine())) {
				// System.out.println(str);
				bw2.write(str);
				bw2.newline();
				bw2.flush();

				// write(byte[],0,len)
			}
		}

	}
}
实现客户端与服务端发送消息简化版 窗体
package com.zking.test2;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.Jtextarea;
import javax.swing.JTextField;

//服务端
public class QQServerChat extends Jframe {
	ServerSocket ss = null;
	Socket sk = null;
	// 上
	JPanel jpa = new JPanel();
	JButton jba = new JButton("启动服务");
	// 中
	Jtextarea jta = new Jtextarea();
	JScrollPane jsp = new JScrollPane(jta);

	// 下
	JPanel jpb = new JPanel();
	JTextField jtfa = new JTextField(15);
	JButton jbb = new JButton("发送");
	JButton jbc = new JButton("接收");

	public QQServerChat() {
		this.setTitle("");
		this.setSize(400, 500);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);
		
		
		//窗体事件
		this.addWindowListener(new WindowListener() {
			
			@Override
			public void windowOpened(WindowEvent e) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void windowIconified(WindowEvent e) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void windowDeiconified(WindowEvent e) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void windowDeactivated(WindowEvent e) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void windowClosing(WindowEvent e) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void windowClosed(WindowEvent e) {
				//当窗体被关闭的时候,将页面上所有的流对象去拿不关闭
				
				//isr.close
			}
			
			@Override
			public void windowActivated(WindowEvent e) {
				// TODO Auto-generated method stub
				
			}
		});
		
		

		jpa.add(jba);

		jpb.add(jtfa);
		jpb.add(jbb);
		jpb.add(jbc);

		this.getContentPane().add(jpa, "North");
		this.getContentPane().add(jsp, "Center");
		this.getContentPane().add(jpb, "South");

		
		jba.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// ServerSocket实例化
				try {
					ss = new ServerSocket(8989);
					// 提示内容设置到jta文本域中
					jta.append("服务器已开启...等待客户端连接;服务器的端口号为: " + ss.getLocalPort() + "n");
				} catch (IOException e1) {
					e1.printStackTrace();
				}
				
				// 通过多线程解决阻塞的问题
				// 请一个机器人时刻监控来连接服务器的客户端
				new Thread() {
					// 重写一个方法
					public void run() {
						while (true) {
							try {
								sk = ss.accept();
							} catch (IOException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
							jta.append("客户端上线了.....n");
						}
					};
				}.start();
				
				//
				// 再请一个机器人自动帮我们接收客户端发送的消息
				new Thread() {
					public void run() {
						while (true) {
							//让小弟先休息一下
							try {
								Thread.sleep(500);
							} catch (InterruptedException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
							if(sk!=null) {
								try {
								InputStream is = sk.getInputStream();
								InputStreamReader isr = new InputStreamReader(is);
								BufferedReader br = new BufferedReader(isr);
								String readLine = br.readLine();
								jta.append("客户端说: "+readLine+"n");
								} catch (IOException e) {
									// TODO Auto-generated catch block
									e.printStackTrace();
								}
							}
						}
					};
				}.start();

				
				
			}
		});

		
		jbb.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// 获取输入框的内容
				String content = jtfa.getText();

				// 通过sk套接字调用网络流 写入
				if (sk != null) {// 成功连上了
					try {
						OutputStream os = sk.getOutputStream();
						OutputStreamWriter osw = new OutputStreamWriter(os);
						BufferedWriter bw = new BufferedWriter(osw);
						// 写
						bw.write(content);
						bw.newline();
						bw.flush();
						// 将内容设置上去
						jta.append("服务器说: " + content + "n");
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}
			}
		});

		// 接收
		jbc.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				if (sk != null) {
					try {
						InputStream is = sk.getInputStream();
						InputStreamReader isr = new InputStreamReader(is);
						BufferedReader br = new BufferedReader(isr);

						String content = br.readLine();

						jta.append("t客户端: " + content + "n");
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}
			}
		});

		this.setVisible(true);
	}

	public static void main(String[] args) {
		new QQServerChat();
	}

}
package com.zking.test2;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;

import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.Jtextarea;
import javax.swing.JTextField;

//客户端
public class QQClientChat extends Jframe {

	Socket sk = null;

	// 上
	JPanel jpa = new JPanel();
	JLabel jla = new JLabel("IP地址");
	JTextField jtfa = new JTextField(10);
	JLabel jlb = new JLabel("端口号");
	JTextField jtfb = new JTextField(10);
	JButton jba = new JButton("连接服务器");
	// 中
	Jtextarea jta = new Jtextarea();
	JScrollPane jsp = new JScrollPane(jta);

	// 下
	JPanel jpb = new JPanel();
	JTextField jtfc = new JTextField(15);
	JButton jbb = new JButton("发送");
	JButton jbc = new JButton("接收");

	public QQClientChat() {
		this.setTitle("");
		this.setSize(500, 500);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);

		jtfa.setText("127.0.0.1");
		jtfb.setText("8989");

		jpa.add(jla);
		jpa.add(jtfa);
		jpa.add(jlb);
		jpa.add(jtfb);
		jpa.add(jba);

		jpb.add(jtfc);
		jpb.add(jbb);
		jpb.add(jbc);

		this.getContentPane().add(jpa, "North");
		this.getContentPane().add(jsp, "Center");
		this.getContentPane().add(jpb, "South");

		
		jba.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				String ip = jtfa.getText();
				int port = Integer.valueOf(jtfb.getText());
				try {
					sk = new Socket(ip, port);
					jta.append("客户端已成功连上服务器n");
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				
				//客户端接收
				new Thread() {
					public void run() {
						while(true) {
							if (sk != null) {
								try {
									InputStream is = sk.getInputStream();
									InputStreamReader isr = new InputStreamReader(is);
									BufferedReader br = new BufferedReader(isr);

									String content = br.readLine();

									jta.append("t服务器: " + content + "n");
								} catch (IOException e1) {
									// TODO Auto-generated catch block
									e1.printStackTrace();
								}
							}
						}
					};
				}.start();
				
			}
		});

		
		jbb.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// 获取输入框的内容
				String content = jtfc.getText();
				System.out.println(content);
				// 通过sk套接字调用网络流 写入
				if (sk != null) {// 成功连上了
					try {
						OutputStream os = sk.getOutputStream();
						OutputStreamWriter osw = new OutputStreamWriter(os);
						BufferedWriter bw = new BufferedWriter(osw);
						// 写
						bw.write(content);
						bw.newline();
						bw.flush();
						// 将内容设置上去
						jta.append("客户端说: " + content + "n");
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}
			}
		});

		// 接收
		jbc.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				if (sk != null) {
					try {
						InputStream is = sk.getInputStream();
						InputStreamReader isr = new InputStreamReader(is);
						BufferedReader br = new BufferedReader(isr);

						String content = br.readLine();

						jta.append("t服务器: " + content + "n");
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}
			}
		});
//		Thread-线程
		this.setVisible(true);
	}

	public static void main(String[] args) {
		new QQClientChat();
	}

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/733048.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号