java - 如何在 Java 中将文件剪切到剪贴板?

标签 java clipboard

我在 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 但我不知道如何让系统知道这是什么操作,或者如何获得每个成功复制文件的反馈以便我可以删除手动从它的原始位置。

如果这不是不可能的,我应该如何处理这个问题有什么建议吗?我也希望能够在应用程序中剪切和粘贴(与操作系统资源管理器单独交换文件)。

最佳答案

还有另一篇帖子,人们讨论了缺乏切割文件的可能性:

Cutting files into the clipboard with SWT

如果你真的需要它,你可以采用丑陋的方式并检查是否有办法通过 JNI 调用来做到这一点,但是你必须对你想要支持的所有平台都这样做......

关于java - 如何在 Java 中将文件剪切到剪贴板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11028993/

相关文章:

java - Android 编码 : ViewRootImpl$CalledFromWrongThreadException. [菜鸟]

java - Facebook SDK 4.x Android 发布为 Facebook 页面

c++ - 如何解决使用旧版 SetClipboard 将我的 COM 对象放置到剪贴板的问题?

Javascript:如何在没有特定用户事件的情况下复制到剪贴板

c++ - 获取剪贴板数据(CF_UNICODETEXT);

.net - 如何以符合系统标准的形式以编程方式从Windows剪贴板剪切/复制文件/从Windows剪贴板获取文件?

java - 如何在网络测试 Selenium 期间禁用互联网?网络驱动程序、Java

java - Apache Ignite 支持万级缓存吗?

java - Quartz - 在一周中的几天和时间每两周安排一次工作

windows - 如何使用批处理文件或 PowerShell 清除 Windows 剪贴板?