Javaのクリップボードからプレーンテキストを取得する方法は既に知っていますが、Microsoft WordやWebサイト、またはEclipseのソースコードからコピーするときなど、テキストが奇妙なDataFlavor
でエンコードされることがあります。
これらのDataFlavor
sから純粋なプレーンテキストを抽出する方法は?
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を使用して、クリップボードからプレーンテキストを取得する必要があります。
クリップボードに奇妙なテキストがある場合、これはデータをクリップボードに入れるプログラムの問題であると思います。
次のメソッドを使用して、Javaでクリップボードテキストを取得できます。
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 "";
}
最初はクリップボードを使ったことがありませんが、これは興味深いようです
http://docstore.mik.ua/orelly/Java/awt/ch16_01.htm から
「クリップボードからデータを読み取るために、プログラムはTransferable.getTransferData()メソッドを呼び出します。データがJavaクラスに対応しないDataFlavorで表される場合(たとえば、plainTextFlavor )、getTransferData()は、データを読み取るためのInputStreamを返します。
したがって、対応していないクラスを指定すると、InputStreamが取得され、InputStreamから「純粋な」テキストを自分で読み取ることができます。