如何在JAVA中获取剪贴板中文件的绝对路径并获取粘贴位置
How to get absolute path of a file in clipboard in JAVA and get the location where it is pasted
我是 java 的新手。如何获取我在剪贴板中复制的文件路径以及粘贴位置。
所以会有两个字符串一个
String copied = "c:\somelocation.exe"
String paste= "d:\somelocation.exe"
我不想要它实时,但它可以检测我的点击的方式?
经过一些调查,我发现,在 general 中,您无法从 Clipboard
.
中获取源文件的绝对路径
当您select一个小文件并复制它时;剪贴板包含文件内容,你所能做的只是从剪贴板读取 InputStream。在这种情况下,您无法获取源文件的路径。
当您 select 一个 大 文件(我用 17Gb mkv 试过)时,剪贴板包含此文件的路径。在这种情况下,您可以读取剪贴板并获取文件路径而不是其内容。再一次,它取决于文件大小,我不知道文件大小是多少 Windows 停止复制文件内容并开始将文件路径放入剪贴板。
下面的代码片段,当我得到一个 Clipboard
实例并检测到两种可能的情况时可以获得源文件路径:当剪贴板包含 plaint string
或 list 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;
}
}
我是 java 的新手。如何获取我在剪贴板中复制的文件路径以及粘贴位置。 所以会有两个字符串一个
String copied = "c:\somelocation.exe"
String paste= "d:\somelocation.exe"
我不想要它实时,但它可以检测我的点击的方式?
经过一些调查,我发现,在 general 中,您无法从 Clipboard
.
当您select一个小文件并复制它时;剪贴板包含文件内容,你所能做的只是从剪贴板读取 InputStream。在这种情况下,您无法获取源文件的路径。
当您 select 一个 大 文件(我用 17Gb mkv 试过)时,剪贴板包含此文件的路径。在这种情况下,您可以读取剪贴板并获取文件路径而不是其内容。再一次,它取决于文件大小,我不知道文件大小是多少 Windows 停止复制文件内容并开始将文件路径放入剪贴板。
下面的代码片段,当我得到一个 Clipboard
实例并检测到两种可能的情况时可以获得源文件路径:当剪贴板包含 plaint string
或 list 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;
}
}