1

Javaでファイルコピーを作成する必要があります。

オペレーティング システムのファイル システムで発生したイベントを確認する方法と、それを制御する方法を知りたいです。

4

1 に答える 1

2

以下のコードを使用して、クリップボードのデータチェックを継続的に実行するスレッドを記述します。

// If a string is on the system clipboard, this method returns it;
// otherwise it returns null.
public static String getClipboard() {
    Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);

    try {
        if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
            String text = (String)t.getTransferData(DataFlavor.stringFlavor);
            return text;
        }
    } catch (UnsupportedFlavorException e) {
    } catch (IOException e) {
    }
    return null;
}

// This method writes a string to the system clipboard.
// otherwise it returns null.
public static void setClipboard(String str) {
    StringSelection ss = new StringSelection(str);
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
}

詳細については、以下のクラスを参照してください

 java.awt.datatransfer.Clipboard;
 java.awt.datatransfer.ClipboardOwner;
 java.awt.datatransfer.Transferable;
 java.awt.datatransfer.StringSelection;
 java.awt.datatransfer.DataFlavor;

以下はリスナーの例です

import java.awt.*;  
import java.awt.datatransfer.*;  

class BoardListener extends Thread implements ClipboardOwner {  
  Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();  

  public void run() {  
    Transferable trans = sysClip.getContents(this);  
    regainOwnership(trans);  
    System.out.println("Listening to board...");  
    while(true) {}  
  }  

  public void lostOwnership(Clipboard c, Transferable t) {  
    Transferable contents = sysClip.getContents(this); //EXCEPTION  
    processContents(contents);  
    regainOwnership(contents);  
  }  

  void processContents(Transferable t) {  
    System.out.println("Processing: " + t);  
  }  

  void regainOwnership(Transferable t) {  
    sysClip.setContents(t, this);  
  }  

  public static void main(String[] args) {  
    BoardListener b = new BoardListener();  
    b.start();  
  }  
}  
于 2012-07-03T04:57:57.353 に答える