JavaFx将文件复制到系统剪贴板并粘贴到操作系统
问题描述:
我有以下问题:我将文件或文件夹复制到系统剪贴板。它真的简单,这里的代码:JavaFx将文件复制到系统剪贴板并粘贴到操作系统
import javafx.scene.input.Clipboard;
import javafx.scene.input.ClipboardContent;
import java.nio.file.Path;
@Override
public void copyHandler(Path path) {
ClipboardContent content = new ClipboardContent();
content.putFiles(singletonList(path.toFile()));
Clipboard clipboard = Clipboard.getSystemClipboard();
clipboard.setContent(content);
}
但成功副本后,我去我的OS(Ubuntu的16.04)的文件系统管理器中单击鼠标右键,并尝试粘贴,但粘贴菜单将被禁用。我的方法有什么问题?
答
这里是Ubuntu的Nautilus文件经办人的具体的解决方案:
public static final DataFormat GNOME_FILES = new DataFormat("x-special/gnome-copied-files");
if (platform == Platform.Linux64 || platform == Platform.Linux32) {
final StringBuilder builder = new StringBuilder("copy\n");
paths.forEach(builder, (path, b) ->
b.append(path.toUri().toASCIIString()).append('\n'));
builder.delete(builder.length() - 1, builder.length());
final ByteBuffer buffer = ByteBuffer.allocate(builder.length());
for (int i = 0, length = builder.length(); i < length; i++) {
buffer.put((byte) builder.charAt(i));
}
buffer.flip();
content.put(GNOME_FILES, buffer);
}
试试这个:'content.putFiles(java.util.Collections.singletonList(新文件( “文件路径”)));' – Calips