> I am within a java application (swing), and
> I would like to get the content of user clipboard as rawdata (binary
[quoted text clipped - 4 lines]
> Does that question makes any sens (since I haven't seen a way to do
> that within java.awt.datatransfer api) ?
// get the clipboard contents
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable transferable = clipboard.getContents(null);
// dump out all available flavors
DataFlavor[] flavors = transferable.getTransferDataFlavors();
for (int i = 0; i < flavors.length; i++) {
System.out.println(flavors[i]);
}
// If the clipboard contains part of a Word-doc or an Excel-Sheet,
// you'll get dozens of different flavors here, for example:
// DataFlavor[mimetype=text/rtf;representationclass=java.io.InputStream]
// DataFlavor[mimetype=text/rtf;representationclass=[B]
// DataFlavor[mimetype=text/plain;representationclass=[B;charset=Cp1252]
// get the contents in one of the flavors (RTF InputStream)
DataFlavor flavor = new
DataFlavor("text/rtf;class=java.io.InputStream");
InputStream stream = (InputStream) transferable.getTransferData(flavor);
// ... read the bytes from the stream...

Signature
Thomas
Thomas Fritsch - 23 Mar 2007 09:22 GMT
> // If the clipboard contains part of a Word-doc or an Excel-Sheet,
> // you'll get dozens of different flavors here, for example:
[quoted text clipped - 7 lines]
> InputStream stream = (InputStream) transferable.getTransferData(flavor);
> // ... read the bytes from the stream...
It is especially cumbersome to get the byte[] and char[] flavors. You
have to specify them as "[B" or "[C", respectively. For example:
DataFlavor flavor = new
DataFlavor("text/plain;class=\"[B\";charset=Cp1252");
byte[] b = (byte[]) transferable.getTransferData(flavor);
(Ask Sun why they didn't write about that in the API docs of DataFlavor.)

Signature
Thomas