2017-07-27 10 views
0

私は以下の問題があります:ファイルまたはフォルダをシステムクリップボードにコピーします。これ本当にシンプル、ここでコード:JavaFxファイルをシステムクリップボードにコピーしてos内に貼り付けます

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)に行き、ファイルシステムエクスプローラ、マウスを右クリックし、[貼り付けようが、ペーストメニューが無効になっています。私のアプローチで何が間違っていますか?

+0

このお試しください: 'content.putFiles(java.util.Collections.singletonList(新しいファイル( "ファイルへのパスを")));' – Calips

答えて

0

ここでの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); 
    } 
関連する問題