我是java的新手。如何将文件路径复制到剪贴板中,并获取粘贴的位置。 所以会有两个字符串
String copied = "c:\\somelocation.exe"
String paste= "d:\\somelocation.exe"
我不想实时,但它可以检测我的点击?
答案 0 :(得分:1)
经过一番调查后,我发现,在一般中,您无法从Clipboard
获取源文件的绝对路径。
选择小文件并复制时;剪贴板包含文件内容,您只需从剪贴板读取InputStream即可。在这种情况下,您无法获取源文件的路径。
当您选择 big 文件时(我已尝试使用17Gb mkv),剪贴板包含此文件的路径。在这种情况下,您可以读取剪贴板并获取文件路径而不是内容。再一次,它取决于文件大小,我不知道Windows停止复制文件内容的文件大小,并开始将文件路径放到剪贴板。
在代码片段下方,当我获得Clipboard
实例并检测到可能获取源文件路径时的两种可能情况:当剪贴板包含plaint string
或list of strings
时。< / p>
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;
}
}