[英]Copy a file to clipboard
我正在嘗試將文件復制到系統剪貼板中。 正如我在互聯網上發現的那樣,我正在努力實現以下目標:
final List<File> files = new ArrayList<File>();
files.add(new File("pathToFile"));
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);
但是,運行該代碼后,我無法從剪貼板粘貼文件(在桌面和系統資源管理器中嘗試過)。 我什至嘗試過睡一覺,因為我讀到JVM必須正在運行才能大膽地粘貼剪貼板內容,但它對我不起作用。
盡管如此, Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
返回我復制到剪貼板的相應文件。
我確實發現的一件事是Toolkit.getDefaultToolkit().getSystemClipboard().isDataFlavorAvailable(DataFlavor.javaFileListFlavor);
返回false
。 這是否意味着剪貼板不支持文件? 因為我能夠使用Ctlr + C和Ctrl + V在資源管理器中復制粘貼文件,所以這沒有任何意義。
我不知道這是否重要,但是我正在Linux Mint下運行測試。
誰能向我解釋為什么我不能粘貼該復制的文件,或者我必須如何復制它才能通過Ctrl + V全系統粘貼?
您可以使用終端命令
String[] args = new String[] {"/bin/bash", "-c","Your command at terminal", "with", "args"};
Process proc = new ProcessBuilder(args).start();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.