如何将FTP链接复制到Windows系统剪贴板?

时间:2013-11-19 03:40:05

标签: java windows swing ftp clipboard

我正在开发一个项目 - 桌面应用程序(Java,Swing),它需要将指向FTP文件的链接复制到系统剪贴板,以便用户能够在资源管理器中粘贴这些文件。

我使用mime-type text/uri-list和表示类java.lang.String的数据风格。我将FTP文件的链接放到剪贴板,但Windows不想将其粘贴到资源管理器中。

代码,尝试将链接复制到剪贴板,如下所示:

public static void main(String[] args) throws Exception{

    final DataFlavor dataFlavor = new DataFlavor("text/uri-list; class=java.lang.String");
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    clipboard.setContents(new Transferable() {
        @Override
        public DataFlavor[] getTransferDataFlavors() {
            return new DataFlavor[]{dataFlavor};
        }

        @Override
        public boolean isDataFlavorSupported(DataFlavor flavor) {
            return dataFlavor.equals(flavor);
        }

        @Override
        public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
            if (dataFlavor.equals(flavor)){
                return "ftp://127.0.0.1:2323/folder/file.txt";
            } 
            return null;
        }
    }, new ClipboardOwner() {
        @Override
        public void lostOwnership(Clipboard clipboard, Transferable contents) {
            System.out. println("Lost clipboard owner");
        }
    });
 }

我还尝试使用其他表示类(InputStream,byte array和char数组)。据我所知,我需要将剪贴板列入java.util.list并使用dataflavor DataFlavor.javaFileListFlavor,但我不知道如何将FTP链接转换为文件。

将FTP链接放在剪贴板中的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

据我所知,Windows中没有特殊的URI剪贴板内容。只需将URI复制为普通String

即可
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection s=new StringSelection("ftp://127.0.0.1:2323/folder/file.txt");
clipboard.setContents(s, s);

如果要创建桌面快捷方式文件,只需创建后缀为.URL的纯文本文件,并将以下内容写入其中:

[InternetShortcut]
URL=ftp://127.0.0.1:2323/folder/file.txt