我已经知道如何从Java中的剪贴板中获取纯文本,但有时文本被编码为一些奇怪的DataFlavor
,就像从Microsoft Word或网站复制时甚至是Eclipse中的源代码一样。 / p>
如何从这些DataFlavor
s中提取纯纯文本?
答案 0 :(得分:53)
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,您应该从剪贴板中获取纯文本。
如果剪贴板中有奇怪的文字,我想,这应该是将数据放入剪贴板的程序问题。
答案 1 :(得分:1)
您可以使用以下方法在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 "";
}
答案 2 :(得分:0)
首先我没有使用剪贴板,但这似乎很有意思
来自http://docstore.mik.ua/orelly/java/awt/ch16_01.htm
“要从剪贴板读取数据,程序调用Transferable.getTransferData()方法。如果数据由与Java类不对应的DataFlavor表示(例如,plainTextFlavor),则getTransferData()返回一个InputStream,供您从中读取数据。“
因此,如果您给它一个不对应的类,您将获得InputStream,然后您可以自己从InputStream中读取“纯”文本。