如何在JAVA中获取剪贴板中文件的绝对路径并获取粘贴位置

How to get absolute path of a file in clipboard in JAVA and get the location where it is pasted

我是 java 的新手。如何获取我在剪贴板中复制的文件路径以及粘贴位置。 所以会有两个字符串一个

我不想要它实时,但它可以检测我的点击的方式?

经过一些调查,我发现,在 general 中,您无法从 Clipboard.

中获取源文件的绝对路径

当您select一个文件并复制它时;剪贴板包含文件内容,你所能做的只是从剪贴板读取 InputStream。在这种情况下,您无法获取源文件的路径。

当您 select 一个 文件(我用 17Gb mkv 试过)时,剪贴板包含此文件的路径。在这种情况下,您可以读取剪贴板并获取文件路径而不是其内容。再一次,它取决于文件大小,我不知道文件大小是多少 Windows 停止复制文件内容并开始将文件路径放入剪贴板。

下面的代码片段,当我得到一个 Clipboard 实例并检测到两种可能的情况时可以获得源文件路径:当剪贴板包含 plaint stringlist of strings .

public static void main(String... args) throws IOException, UnsupportedFlavorException {
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    String path = readAsString(clipboard);
    path = path == null ? readAsFileList(clipboard) : path;
}

private static String readAsFileList(Clipboard clipboard) {
    try {
        List<String> paths = (List<String>)clipboard.getData(DataFlavor.javaFileListFlavor);
        return paths.isEmpty() ? null : paths.iterator().next();
    } catch(Exception e) {
        e.printStackTrace();
        return null;
    }
}

private static String readAsString(Clipboard clipboard) {
    try {
        return (String)clipboard.getData(DataFlavor.stringFlavor);
    } catch(Exception e) {
        e.printStackTrace();
        return null;
    }
}