簡體   English   中英

將文件復制到剪貼板

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM