我正在使用这段代码在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并找到文件(希望在其他操作系统上也能正常工作,尚未测试)。我想要实现剪切,但我不知道如何让系统知道这就是所需的操作,或者,如何为每个成功复制的文件获取反馈,以便我可以手动从其原始位置删除它。
如果这不是不可能的,请问如何处理?我希望能够在应用程序内部进行剪切和粘贴(与与操作系统资源管理器交换文件分开)。