Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将FTP链接复制到Windows系统剪贴板?_Java_Windows_Swing_Ftp_Clipboard - Fatal编程技术网

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

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

我正在开发一个项目桌面应用程序(Java),它需要将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数组和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来解决