我在 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但我不知道如何让系统知道这就是操作,或者如何获取每个成功复制的文件的反馈,以便我可以手动将其从原始位置删除。
如果这不是不可能的,关于我应该如何处理的任何建议?我也希望能够在应用程序中剪切和粘贴(分别与操作系统资源管理器交换文件)。