我正在开发一个项目 - 桌面应用程序(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链接放在剪贴板中的正确方法是什么?
答案 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