我在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调用来执行此操作,但是您必须对要支持的所有平台都执行此操作...