Java 如何将FTP链接复制到Windows系统剪贴板?
我正在开发一个项目桌面应用程序(Java),它需要将FTP文件的链接复制到系统剪贴板,以便用户能够在资源管理器中粘贴这些文件 我将数据风格与Java 如何将FTP链接复制到Windows系统剪贴板?,java,windows,swing,ftp,clipboard,Java,Windows,Swing,Ftp,Clipboard,我正在开发一个项目桌面应用程序(Java),它需要将FTP文件的链接复制到系统剪贴板,以便用户能够在资源管理器中粘贴这些文件 我将数据风格与mime-type-text/uri-list和表示类java.lang.String结合使用。我将FTP文件的链接放在剪贴板上,但Windows不想将其粘贴到资源管理器中 代码,尝试将链接复制到剪贴板,如下所示: public static void main(String[] args) throws Exception{ final Data
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数组和char数组)。据我所知,我需要将java.util.list列表放入剪贴板,并使用dataflavor dataflavor.javaFileListFlavor,但我不知道如何将FTP链接转换为文件
在剪贴板中放置FTP链接的正确方法是什么?据我所知,Windows中没有特殊的URI剪贴板内容。只需将URI复制为普通的
字符串
:
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
不,这不起作用。这段代码将简单的文本复制到系统剪贴板。您如何区分它们之间的区别?或者,换句话说:哪个软件做其他事情?当我从资源管理器复制URL时,结果是一样的:在剪贴板中有它的文本表示。文本表示不可用。操作系统需要指向文件的链接,而不是文本。在资源管理器中复制文件后,我可以在剪贴板中看到mime类型的dataflavors应用程序/x-java-file-list、应用程序/x-java-url、text/uri列表、text/plain。在剪贴板中有这些数据后,我可以将文件粘贴到任何其他文件夹中,在桌面上执行示例后,我可以在剪贴板中看到具有mime类型的dataflavors application/x-java-url、application/x-java-text-encoding、text/uri列表、text/plain、,但是没有应用程序/x-java-file-list的dataflavor和资源管理器中的粘贴或桌面不可用mime类型的应用程序/x-java-file-list:[,,䁼, , , , , , , , , 退샄ǎ退샄ǎ退샄ǎ, 我认为这个问题不能用java来解决