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

📄 uploadpanel.java

📁 该系统是一个基于p2p的即时聊天系统
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
     * 对文件或者目录重新命名     *     * @param name 新的名称     */    public void rename(String name) {        DefaultMutableTreeNode node = getSelectedNode();        if (node != FILE_ROOT) {            ZipEntry entry = (ZipEntry) node.getUserObject();            toolkit.rename(entry, name);            boolean isDir = entry.isDirectory();            String parentName = "";            node = (DefaultMutableTreeNode) node.getParent();            if (node != FILE_ROOT) {                parentName = ((ZipEntry) node.getUserObject()).getName();            }            reloadEntries();            node = getNode(parentName);            fileSystemTree.expandPath(new TreePath(node.getPath()));            for (int i = 0; i < node.getChildCount(); i++) {                DefaultMutableTreeNode child = (DefaultMutableTreeNode) node                    .getChildAt(i);                ZipEntry entry2 = (ZipEntry) child.getUserObject();                if (entry2.isDirectory() == isDir) {                    String name2 = toolkit.getShortName(entry2);                    if (name2.equals(name) == true) {                        fileSystemTree                            .setSelectionPath(new TreePath(child.getPath()));                        break;                    }                }            }        }    }    /**     * 从选中的节点中提取文件到指定的目录下     *     * @param dir 指定的目录     */    public void extractFile(File dir) {        DefaultMutableTreeNode node = getSelectedNode();        if (node == FILE_ROOT) {            toolkit.extractFile(dir, toolkit.getEntries().toArray(), null);        } else {            ZipEntry entry = (ZipEntry) node.getUserObject();            if (entry.isDirectory()) {                List entries = new ArrayList();                for (int i = 0; i < toolkit.getEntries().size(); i++) {                    ZipEntry entry2 = (ZipEntry) toolkit.getEntries().get(i);                    if (entry2.getName().startsWith(entry.getName())) {                        entries.add(entry2);                    }                }                String name = toolkit.getShortName(entry) + DELIMITER;                String omit = entry.getName();                omit = omit.substring(0, omit.length() - name.length());                toolkit.extractFile(dir, entries.toArray(), omit);            } else {                String name = toolkit.getShortName(entry);                String omit = entry.getName();                omit = omit.substring(0, omit.length() - name.length());                toolkit.extractFile(dir, new Object[] {entry}, omit);            }        }        extractFile(null, null);    }    /**     * 提取指定的文件到指定的目录下     *     * @param file 指定文件的文件名     * @param dir 指定的目录     */    public void extractFile(String file, File dir) {        ZipEntry entry = null;        List entries = toolkit.getEntries();        for (int i = 0; i < entries.size(); i++) {            entry = (ZipEntry) entries.get(i);            if (entry.getName().equals(file)) {                break;            } else {                entry = null;            }        }        if (entry != null) {            String shortName = toolkit.getShortName(entry);            String omit = entry.getName();            omit = omit.substring(0, omit.length() - shortName.length());            toolkit.extractFile(dir, new Object[] {entry}, omit);        }    }    /**     * 刷新     */    public void refresh() {        String file = getSelectedFile();        if (file != null && file.endsWith(DELIMITER) == false) {            SetShareAction.getInstance().setEnabled(true);        } else {            SetShareAction.getInstance().setEnabled(false);        }        handlerUserViewPanel();    }    /*------------------------------------------------------------------------*     *                                私有方法                                *     *------------------------------------------------------------------------*/    /**     * 处理用户视图     */    private void handlerUserViewPanel() {        if (ViewPanel.getInstance().getUserID().length() > 0            && getSelectedFile() != null) {            unloadUsers();            try {                XmlRpc.setDriver("org.apache.xerces.parsers.SAXParser");                XmlRpcClient client = new XmlRpcClient(genURL());                String response = client.execute(genRequest()).toString();                SAXBuilder builder = new SAXBuilder();                StringReader reader = new StringReader(response);                Document document = builder.build(reader);                Element root = document.getRootElement();                List friends = root.getChild("Friends").getChildren();                for (int i = 0; i < friends.size(); i++) {                    Element friend = (Element) friends.get(i);                    String id = friend.getAttributeValue("id");                    DefaultMutableTreeNode n = new DefaultMutableTreeNode(id);                    userSystemModel.insertNodeInto(                        n, USER_ROOT, USER_ROOT.getChildCount());                }                userSystemTree.setSelectionRow(0);                userSystemTree.expandRow(0);            } catch (ClassNotFoundException e) {                JOptionPane.showMessageDialog(Smart.getInstance(),                    "系统找不到类库“org.apache.xerces.parsers.SAXParser”!",                    StringShop.HINT_TITLE, JOptionPane.INFORMATION_MESSAGE);            } catch (MalformedURLException e) {                e.printStackTrace();            } catch (XmlRpcException e) {                e.printStackTrace();            } catch (IOException e) {                JOptionPane.showMessageDialog(Smart.getInstance(),                    "文件服务已关闭,请稍候再试!", StringShop.HINT_TITLE,                    JOptionPane.INFORMATION_MESSAGE);            } catch (JDOMException e) {                JOptionPane.showMessageDialog(Smart.getInstance(),                    "操作失败,请稍候再试!", StringShop.HINT_TITLE,                    JOptionPane.INFORMATION_MESSAGE);            }        }    }    /**     * 生成请求URL     *     * @return 生成的请求URL     */    private String genURL() {        StringBuffer url = new StringBuffer();        url.append("http://");        url.append(XMLConfig.getServicesIP());        url.append(":");        url.append(XMLConfig.getFilePort());        url.append(DELIMITER);        return url.toString();    }    /**     * 生成XML-RPC请求消息     *     * @return 生成的XML-RPC请求消息     */    private XmlRpcRequest genRequest() {        //请求方法        StringBuffer method = new StringBuffer();        method.append(XMLConfig.getFileClass());        method.append(".");        method.append(XMLConfig.getFileMethod());        //请求参数        Vector params = new Vector();        XMLOutputter outputter = new XMLOutputter();        params.addElement(outputter.outputString(genDocument()));        return new XmlRpcRequest(method.toString(), params);    }    /**     * 生成XML文档     *     * @return 生成的XML文档     */    private Document genDocument() {        Element request = new Element("Request");        Element share = new Element("Share");        request.addContent(share);        share.setAttribute("id", ViewPanel.getInstance().getUserID());        share.setAttribute("file", getSelectedFile());        return new Document(request);    }    /**     * 设置树型组件的附加选项     *     * @param tree 待设置的树型组件     */    private void setTree(JTree tree) {        DefaultTreeSelectionModel model = new DefaultTreeSelectionModel();        model.setSelectionMode(model.SINGLE_TREE_SELECTION);        tree.setSelectionModel(model);        tree.setSelectionRow(0);        tree.expandRow(0);    }    /**     * 在文件系统树上查找具有实体名称的节点     *     * @param text 指定的实体名称     * @return 文件系统树上查找具有实体名称的节点     */    private DefaultMutableTreeNode getNode(String text) {        DefaultMutableTreeNode parent = FILE_ROOT;        StringTokenizer st = new StringTokenizer(text, DELIMITER);        if (st.hasMoreTokens() == true) {            StringBuffer sb = new StringBuffer();            while (st.hasMoreTokens()) {                sb.append(st.nextToken());                sb.append(DELIMITER);                for (int j = 0; j < parent.getChildCount(); j++) {                    DefaultMutableTreeNode parent2 =                        (DefaultMutableTreeNode) parent.getChildAt(j);                    ZipEntry entry = (ZipEntry) parent2.getUserObject();                    if (sb.toString().equals(entry.getName())) {                        parent = parent2;                        break;                    }                }            }        }        return parent;    }    /**     * 装载实体     */    private void loadEntries() {        toolkit.openFile(new File(XMLConfig.getUploadFile()));        List entries = toolkit.getEntries();        for (int i = 0; i < entries.size(); i++) {            ZipEntry entry = (ZipEntry) entries.get(i);            DefaultMutableTreeNode child = new DefaultMutableTreeNode(entry);            String name = entry.getName();            String parentName = name;            if (entry.isDirectory() == true) {                name = name.substring(0, name.length() - 1);                int index = name.lastIndexOf(DELIMITER);                if (index != -1) {                    parentName = name.substring(0, index + 1);                }            } else {                int index = name.lastIndexOf(DELIMITER);                if (index != -1) {                    parentName = name.substring(0, index + 1);                }            }            DefaultMutableTreeNode parent = getNode(parentName);            boolean inserted = false;            for (int j = 0; j < parent.getChildCount(); j++) {                DefaultMutableTreeNode sibling =                    (DefaultMutableTreeNode) parent.getChildAt(j);                ZipEntry entry2 = (ZipEntry) sibling.getUserObject();                if (toolkit.compare(entry, entry2) < 0) {                    fileSystemModel.insertNodeInto(child, parent, j);                    inserted = true;                    break;                }            }            if (inserted == false) {                fileSystemModel.insertNodeInto(                    child, parent, parent.getChildCount());            }        }        fileSystemTree.expandRow(0);    }    /**     * 卸载实体     */    private void unloadEntries() {        int count = FILE_ROOT.getChildCount();        for (int i = 0; i < count; i++) {            fileSystemModel.removeNodeFromParent(                (DefaultMutableTreeNode) FILE_ROOT.getChildAt(0));        }    }    /**     * 重载实体

⌨️ 快捷键说明

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