我在Java Swing应用程序中使用以下代码将文件复制到剪贴板:

final List<File> files = new ArrayList<File>();
// ... code to fill list omitted ... //

Toolkit.getDefaultToolkit().getSystemClipboard().setContents(
    new Transferable() {
        @Override
        public DataFlavor[] getTransferDataFlavors() {
            return new DataFlavor[] { DataFlavor.javaFileListFlavor };
        }

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

        @Override
        public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
            return files;
        }
    }, null
);

它可以运行,因为我可以转到Windows资源管理器和Ctrl + V,打开文件(希望它可以在其他操作系统上运行,尽管未经测试)。我也想实现 cut ,但我不知道如何让系统知道那是什么,或者如何获取每个成功复制文件的反馈,以便可以将其从原始位置删除手动。

如果这不是不可能的话,那么我应该如何处理呢?我也希望能够在应用程序中剪切和粘贴(单独使用OS Explorer交换文件)。

最佳答案

在另一篇文章中,人们讨论了无法剪切文件的可能性:

Cutting files into the clipboard with SWT

如果您确实需要它,可以采取丑陋的方法,并检查是否可以通过JNI调用来执行此操作,但是您必须对要支持的所有平台都执行此操作...

10-08 19:14