⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fss.java

📁 局域网传输共享文件
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
							getSubdirs.close();
						}
					}
				}
			} else {
				JOptionPane.showMessageDialog(this, "不是目录!", "Error",
						JOptionPane.ERROR_MESSAGE);
				menu1.setEnabled(true);
			}

		} else if (arg0.getClickCount() == 1) {// 单击
			menu1.setEnabled(true);
			ToolTipManager.sharedInstance().setInitialDelay(1);
			indexoffile = list.locationToIndex(arg0.getPoint());
			if (indexoffile >= rr.length) {
				return;
			}
			int k = list.getComponentCount();
			int index = list.locationToIndex(arg0.getPoint());
			String s1 = rr[index].substring(rr[index].indexOf("{") + 1,
					rr[index].indexOf("}")), s2 = "权限:", s3 = rr[index]
					.substring(rr[index].indexOf("}") + 1).trim(), s4 = "长度:";
			if (s1.indexOf("R") != -1 || s1.indexOf("W") != -1) {
				if (s1.indexOf("R") != -1) {
					s2 += "读";
				}
				if (s1.indexOf("W") != -1) {
					s2 += "写";
				}
				if (s1.indexOf("D") != -1) {
					s2 += "删";
				}
				if (s1.indexOf("X") != -1) {
					s2 += "可执行";
				}
			} else {
				s2 += "(无)";
			}
			if (s3.indexOf("#") != -1) {
				s4 += "(目录)";
			} else {
				int l = Integer.parseInt(s3);
				s4 += l;
			}

			list.setToolTipText(s2 + "   " + s4);

		}
	}

	public void mouseEntered(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	public void mouseExited(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	public void mousePressed(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	public void mouseReleased(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	public class DeleteFile extends Thread {// 未完全正确实现
		String file = "";

		MouseListener f = null;

		String operation = "";

		int positon;

		DatagramSocket deletes = null, editserver = null;

		public DeleteFile(int newposition, String filename, String operation1,
				MouseListener newf) {
			file = filename;
			operation = operation1;
			f = newf;
			positon = newposition;

		}

		public void run() {
			try {

				InetAddress add = InetAddress.getByName(ip.getText().trim());
				deletes = new DatagramSocket();// add, 8000
				byte[] b = (operation + file).getBytes();
				DatagramPacket deletesp = new DatagramPacket(b, b.length, add,
						8000);
				deletes.send(deletesp);
				deletes.close();
				editserver = new DatagramSocket(8001);
				byte[] editserverb = new byte[5];
				DatagramPacket editserverp = new DatagramPacket(editserverb,
						editserverb.length);
				editserver.receive(editserverp);
				editserver.close();
				String editserverst = new String(editserverp.getData(), 0,
						editserverp.getLength()).trim();
				if (editserverst.equals("OK")) {
					tip.setText("成功");// 未解决list删除项
					lmodel = new DefaultListModel();
					if (operation.equals("DEL") || operation.equals("REN")) {
						list.removeMouseListener(f);
					}
					ToolTipManager.sharedInstance().registerComponent(list);
				} else {
					tip.setText("失败");

				}
			} catch (Exception e) {
				if (deletes != null && !deletes.isClosed()) {
					JOptionPane.showMessageDialog(new JFrame(),
							"未完成的socket11关闭", "Error",
							JOptionPane.ERROR_MESSAGE);
					deletes.close();
				} else if (editserver != null && !editserver.isClosed()) {
					JOptionPane.showMessageDialog(new JFrame(),
							"未完成的socket22关闭", "Error",
							JOptionPane.ERROR_MESSAGE);
					editserver.close();
				}
				e.printStackTrace();
			}
		}
	}

	public class jieshoudelete extends Thread {
		public void run() {
			while (true) {
				try {
					InetAddress add;
					DatagramSocket jieshoudelserver = new DatagramSocket(8000);
					byte[] jieshoudelserverb1 = new byte[400];
					DatagramPacket jieshoudelserverp = new DatagramPacket(
							jieshoudelserverb1, jieshoudelserverb1.length);
					jieshoudelserver.receive(jieshoudelserverp);
					add = jieshoudelserverp.getAddress();
					jieshoudelserver.close();
					String jieshoudelserverst1 = new String(jieshoudelserverp
							.getData(), 0, jieshoudelserverp.getLength())
							.trim();
					String op = jieshoudelserverst1.substring(0, 3);
					String filename = jieshoudelserverst1.substring(3 + host2
							.length() + 1);
					String result = "";
					if (op.equals("DEL")) {
						int pos = filename.lastIndexOf("\\");
						File f = new File(filename.substring(0, pos + 1),
								filename.substring(pos + 1));
						String s2 = f.getAbsolutePath();
						boolean del = notdeletef.contains(s2);
						if (!del) {
							if (FileOperate.delFolder(filename)) {
								result = "OK";
								Date currentDate = new Date();
								String lastdate = currentDate.toString();
								editedfiles.add("于" + lastdate + " , 文件: "
										+ f.getAbsolutePath() + "被 " + host
										+ " 删除");
							} else {
								result = "NO";
							}
						} else {
							result = "NO";
						}

					} else if (op.equals("REN")) {
						int pos = filename.lastIndexOf("\\");
						File f = new File(filename.substring(0, pos + 1),
								filename.substring(pos + 1, filename
										.indexOf("{")));
						String s2 = f.getAbsolutePath();
						String newname = filename.substring(filename
								.indexOf("{") + 1, filename.indexOf("}"));
						boolean done = f.renameTo(new File(filename.substring(
								0, pos + 1), newname));
						f.exists();
						if (done) {
							result = "OK";
						} else {
							result = "NO";
						}
					} else if (op.equals("MOV")) {

						String old = filename.substring(0, filename
								.indexOf("{"));
						String newf = null;
						boolean done = true;
						newf = filename.substring(filename.indexOf("{")
								+ host2.length() + 2, filename.indexOf("}"));
						if (new File(old).isDirectory()) {
							done = FileOperate.moveFolder(old, newf + "\\"
									+ new File(old).getName() + "\\");
						} else {
							done = FileOperate.moveFile(old, newf);
						}

						if (done) {
							result = "OK";
						} else {
							result = "NO";
						}
					}
					DatagramSocket jieshoudelservers2 = new DatagramSocket();
					byte[] jieshoudelservers2b = result.getBytes();
					DatagramPacket jieshoudelservers2p = new DatagramPacket(
							jieshoudelservers2b, jieshoudelservers2b.length,
							add, 8001);
					jieshoudelservers2.send(jieshoudelservers2p);
					jieshoudelservers2.close();
				} catch (SocketException e) {
					e.printStackTrace();
				} catch (IOException e) {
					// TODO 自动生成 catch 块
					e.printStackTrace();
				}
			}
		}
	}

	public class fasongdir extends Thread {// 相应用户双击,返回子目录
		public void run() {
			while (true) {
				DatagramSocket fasongSubdirserver = null;
				try {
					InetAddress add;
					fasongSubdirserver = new DatagramSocket(9871);
					byte[] b = new byte[800];
					DatagramPacket fasongSubdirserverp = new DatagramPacket(b,
							b.length);
					fasongSubdirserver.receive(fasongSubdirserverp);
					add = fasongSubdirserverp.getAddress();
					fasongSubdirserver.close();
					String s = new String(fasongSubdirserverp.getData(), 0,
							fasongSubdirserverp.getLength()).trim();
					String operation = s.substring(0, 3);
					s = s.substring(s.indexOf("\\") + 1);
					File file = new File(s);
					String[] list1 = null;
					if (operation.equals("SUB")) {
						root = true;
						if (!file.exists()) {
							return;
						}
						list1 = file.list();
					} else if (operation.equals("PAR")) {
						String fp1 = file.getParent();
						if (v.contains(s)) {
							list1 = new String[v.size()];
							for (int i = 0; i < v.size(); i++) {
								list1[i] = (String) v.elementAt(i);
							}
							root = false;
						} else {
							root = true;
							File fp = new File(fp1);
							s = fp1;
							list1 = fp.list();
						}
					} else {
						return;
					}
					String sub = "";
					for (int i = 0; list1 != null && i < list1.length; i++) {
						File f1 = null;
						int count = 0;
						if (root) {
							f1 = new File(s, list1[i]);
						} else {
							f1 = new File(list1[i]);
						}
						if (f1.exists()) {
							sub += "?" + list1[i]
									+ printspaces(30 - list1[i].length()) + "{";
							if (read.get(f1.getAbsolutePath()) == null) {
								sub += "R";
								count++;
							}
							if (exe.get(f1.getAbsolutePath()) == null) {
								sub += "X";
								count++;
							}
							if (write.get(f1.getAbsolutePath()) == null) {
								sub += "W";
								count++;
							}
							if (!notdeletef.contains(f1.getAbsolutePath())) {
								sub += "D";
								count++;
							}
							sub += "}" + printspaces(2 - count) + "    "
									+ f1.length();
							if (f1.isDirectory()) {
								sub += "#";
							}
						}
					}
					byte[] b2 = sub.getBytes();
					DatagramSocket fasongSubdirs2 = new DatagramSocket();// add,
					// 9001
					DatagramPacket fasongSubdirs2p = new DatagramPacket(b2,
							b2.length, add, 9001);
					fasongSubdirs2.send(fasongSubdirs2p);
					fasongSubdirs2.close();
					fasongSubdirs2.close();
				} catch (Exception e) {
					e.printStackTrace();
					if (fasongSubdirserver != null
							&& !fasongSubdirserver.isClosed()) {
						fasongSubdirserver.close();
					}
				}
			}
		}
	}

	public class BendiFrame extends JFrame implements ActionListener {
		Checkbox readc, writec, deletec, exec;

		JTextField f, f2, z1;

		JPasswordField z2;

		JFrame d4 = new JFrame("管理用户");

		Dialog d, d1, d2, d3, d5, d6, d7;

		Checkbox[] chs = null;

		Checkbox[] cmi = null;

		JTextArea xiaoxi;

		@SuppressWarnings("deprecation")
		public BendiFrame() {
			setSize(500, 500);
			addWindowListener(new WindowAdapter() {
				public void windowClosing(WindowEvent e) {
					dispose();
				}
			});
			setTitle("本地文件系统");
			Dimension sc = getToolkit().getScreenSize();
			Dimension sz = getSize();
			setLocation(sc.width / 2 - sz.width / 2, sc.height / 2 - sz.height
					/ 2);
			Container con = this.getContentPane();
			JPanel pup = new JPanel();
			pup.setLayout(new FlowLayout());
			JButton b;
			b = new JButton("设置权限");
			b.addActionListener(this);
			pup.add(b);
			b = new JButton("刷新");
			b.addActionListener(this);
			pup.add(b);
			con.add(pup, "North");
			setVisible(true);
			xiaoxi = new JTextArea();
			xiaoxi.setLineWrap(true);
			xiaoxi.setEditable(false);
			xiaoxi.setEnabled(false);
			JScrollPane pane = new JScrollPane(xiaoxi);
			pane
					.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
			if (editedfiles.size() == 0) {
				xiaoxi.setText("无记录");
			} else {
				xiaoxi.setText("");
				for (int i = 0; i < editedfiles.size(); i++) {
					xiaoxi.append((String) editedfiles.elementAt(i) + "\n");
				}
			}
			con.add(pane);
			JPanel down = new JPanel();
			down.setLayout(new FlowLayout(FlowLayout.CENTER));
			JButton tianjia = new JButton("添加共享文件(夹)");
			tianjia.addActionListener(this);
			JButton shanchu = new JButton("删除共享文件(夹)");
			shanchu.addActionListener(this);
			JButton liulan = new JButton("浏览已共享文件夹");
			liulan.addActionListener(this);
			down.add(tianjia);
			down.add(liulan);
			down.add(shanchu);
			con.add(down, "South");
			JPanel east = new JPanel();
			east.setLayout(new GridLayout(3, 1));
			JPanel ebp = new JPanel();
			JButton eb = new JButton("管理用户");
			eb.addActionListener(this);
			ebp.add(eb);
			east.add(ebp);
			ebp = new JPanel();
			eb = new JButton("清除列表");// editedfiles
			eb.addActionListener(this);
			ebp.add(eb);
			east.add(ebp);
			ebp = new JPanel();
			eb = new JButton("在线用户");
			eb.addActionListener(this);
			ebp.add(eb);
			east.add(ebp);
			con.add(east, "East");

		}

		@SuppressWarnings("deprecation")
		public void actionPerformed(ActionEvent e) {
			String s = e.getActionCommand();
			if (s.equals("设置权限")) {
				d = new Dialog(this, "设置权限", true);
				d.setSize(400, 200);
				Dimension sc = d.getToolkit().getScreenSize();
				Dimension sz = d.getSize();
				d.setLocation(sc.width / 2 - sz.width / 2, sc.height / 2
						- sz.height / 2);
				d.addWindowListener(new WindowAdapter() {
					public void windowClosing(WindowEvent e) {
						d.dispose();
					}
				});
				JPanel up = new JPanel();
				up.setLayout(new FlowLayout());
				f = new JTextField(20);
				JButton b = new JButton("浏览...");
				b.addActionListener(this);
				up.add(f);
				up.add(b);
				d.add(up, "North");
				readc = new Checkbox("读", true);
				writec = new Checkbox("写", true);
				deletec = new Checkbox("删除", true);
				exec = new Checkbox("可执行", true);
				JPanel checkp = new JPanel();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -