我遇到以下问题:我将文件或文件夹复制到系统剪贴板。这很简单,这里是代码:
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);
}
但是在成功复制后,我转到我的操作系统(Ubuntu 16.04)文件系统资源管理器,单击鼠标右键并尝试粘贴,但粘贴菜单被禁用。我的方法出了什么问题?
答案 0 :(得分:1)
这里是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);
}