2011-08-18 11 views
41

から読み取り可能なテキストを取得しますが、時にはテキストは、Microsoft WordからまたはEclipseからのウェブサイト、あるいはソースコードからコピーするときのように、いくつかの奇妙なDataFlavorでエンコードされています。これらDataFlavor sから純粋なプレーンテキストを抽出する方法を私はすでにJavaでクリップボードからプレーンテキストを取得する方法を知っている唯一のクリップボード

+5

おかげで、しかし、私たちは、テキストstyle..egを取得したい場合、我々はどのように行うかJavaソリューションではなく、JavaScriptの – clamp

答えて

49
import java.awt.HeadlessException; 
import java.awt.Toolkit; 
import java.awt.datatransfer.DataFlavor; 
import java.awt.datatransfer.UnsupportedFlavorException; 
import java.io.IOException; 

String data = (String) Toolkit.getDefaultToolkit() 
       .getSystemClipboard().getData(DataFlavor.stringFlavor); 

getData()メソッドとstringFlavorを使用すると、クリップボードからプレーンテキストを取得する必要があります。

奇妙なテキストがクリップボードに存在する場合、私は、これはクリップボードにデータを置くプログラムの開発の問題だと思います。

+0

を探しています、太字、斜体... –

+2

警告:上記のコードを使用すると、この既知のJavaバグhttp://bugs.java.com/bugdatabase/view_bug.do?bug_id=6606476(私がやったように)を打つことができ、作業はありませんまわり。幸いにも私はPerlをインストールしているので、クリップボードの内容をプレーンテキストに設定するPerlスクリプトを呼び出すことができます。 :( –

+0

@SteveWaringその奇妙なuncatchableエラーで頭をアップしてくれてありがとう。まだテストしていないが、私はSystem.errストリームをnullに設定し、Dragon8のソリューションを試しているときにnullポインタをキャッチすることをお勧めします。 T)^ _ ^行われたときに正常に戻って、それを設定するのを忘れ – ThatOneGuy

0

まず私は、クリップボードに働いていないが、これは、クリップボードからデータを読み込むには、」http://docstore.mik.ua/orelly/java/awt/ch16_01.htm

から

をintrestingのようで、プログラムがたTransferable.getTransferData()メソッドを呼び出します。データが表現されている場合Javaクラス(たとえばplainTextFlavor)に対応しないDataFlavorによって、getTransferData()はデータを読み取るためのInputStreamを返します。

だから、あなたはそれをあなたがInputStreamを取得correspontしないと、あなたは自分のInputStreamから「純粋な」テキストを読むことができるクラスを与えれば。

あなたはJavaでクリップボードのテキストを取得する方法次使用することができます
+0

[DataFlavor.plainTextFlavor](http://docs.oracle.com/javase/7/docs/api/java/awt/datatransfer/DataFlavor.html#plainTextFlavor )は、Java 1.3以後廃止予定です。 – Huxi

1

public String getClipBoard(){ 
    try { 
     return (String)Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor); 
    } catch (HeadlessException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace();    
    } catch (UnsupportedFlavorException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace();    
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return ""; 
} 
関連する問題