我一直在脑子里对着桌子打一个小时,现在只是想找到某种说出来的方法……从剪贴板上拿出一个字节数组。相反,我似乎只能找到有关如何从剪贴板中获取 纯文本
的信息……这根本没有帮助。
我试过以下操作:Java获取剪贴板的字节数
我也尝试过以下操作:http : //mrbool.com/manipulating-clipboard-content-with-
java/24758
每次遇到“不受支持”的愚蠢DataFlavor时。当然这里还有一些简单的我失踪这里…我的意思是......如何支持纯文本,图像和Java对象,但不具备基本功能,只是
必须是 这一切的引擎盖下?
抱歉,如果我听起来很讽刺并且在这里生气……Java似乎对我有影响。:(
Awt剪贴板和MIME类型
InsideClipboard显示内容的MIME类型为application/spark editor
您应该能够通过使用构造函数创建MIME类型DataFlavor,DataFlavor(String mimeType, String humanReadableFormat)
在这种情况下,类表示形式将是一种InputStream
您可以从中提取字节的经典方式…
但是,此剪贴板实现对mime类型定义非常严格,并且您不能使用ID格式的空格,这太糟糕了,因为您的编辑器似乎在其中放置了一个空格:(
可能的解决方案,如果您有权访问JavaFX
JavaFX的剪贴板管理更加宽松,并且可以容纳剪贴板中的各种“格式名称”(InsideClipboard称呼它们),而不仅仅是type/subtype
awt中的无空格哑剧格式。
例如,使用LibreOffice Draw 4.2并复制一个Rectangle形状,awt仅看到一种application/x-java- rawimage
格式,而JavaFX看到与InsideClipboard相同的所有格式:
[application / x-java-rawimage],[PNG],[Star Object
Descriptor(XML)],[cf3],[Windows位图],[GDIMetaFile],[cf17],[Star Embed
Source(XML)],[图纸格式]
然后,您可以从JavaFX剪贴板中获取原始数据 java.nio.ByteBuffer
//with awt
DataFlavor[] availableDataFlavors = Toolkit.getDefaultToolkit().getSystemClipboard().getAvailableDataFlavors();
System.out.println("Awt detected flavors : "+availableDataFlavors.length);
for (DataFlavor f : availableDataFlavors) {
System.out.println(f);
}
//with JavaFX (called from JavaFX thread, eg start method in a javaFX Application
Set<DataFormat> contentTypes = Clipboard.getSystemClipboard().getContentTypes();
System.out.println("JavaFX detected flavors : " + contentTypes.size());
for (DataFormat s : contentTypes) {
System.out.println(s);
}
//let's attempt to extract bytes from the clipboard containing data from the game editor
// (note : some types will be automatically mapped to Java classes, and unknown types to a ByteBuffer)
// another reproducable example is type "Drawing Format" with a Rectangle shape copied from LibreOffice Draw 4.2
DataFormat df = DataFormat.lookupMimeType("application/spark editor");
if (df != null) {
Object content = Clipboard.getSystemClipboard().getContent(df);
if (content instanceof ByteBuffer) {
ByteBuffer buffer = (ByteBuffer) content;
System.err.println(new String(buffer.array(), "UTF-8"));
} else
System.err.println(content);
}
问题内容: 所以我想获得用户剪贴板的实际字节。我找不到这样做的方法,我所能找到的就是如何将剪贴板作为字符串获取。 若要将剪贴板作为字符串,我必须执行以下操作: 帮助将不胜感激。 问题答案: 获得剪贴板的String表示后,就可以通过String#getBytes()获得字节。
问题内容: 我已经知道如何从Java剪贴板中获取纯文本,但是有时文本会以某种奇怪的方式进行编码,例如从Microsoft Word或从网站复制甚至从Eclipse复制源代码时。 如何从这些s中提取纯文本? 问题答案: 使用getData()方法和stringFlavor,您应该从剪贴板中获取纯文本。 如果剪贴板中有奇怪的文本,我认为,这应该是将数据放入剪贴板的程序问题。
我只想能够阅读纯文本。没有图像什么的。我也找到了一些关于这方面的其他文章,但是没有一个代码在Unity中工作。
问题是,从vim到剪贴板的复制/粘贴停止工作。我不知道为什么。。。 在中,我也没有看到和缓冲区... 这是我的。vimrc,如果需要的话。 有什么建议吗? 谢谢
有人知道是否可以从Windows的命令提示符或控制台窗口复制文本,比如命令、控制台应用程序或批处理文件的输出吗?
函数名称:读取剪贴板 函数功能:对系统剪贴板进行读取操作 函数方法 str = device.readPasteboard() 返回值 类型 说明 str string 剪贴板的内容 函数示例 写入并读取剪贴板内容 str1 = "测试写入剪贴板" device.writePasteboard(str1) --写入剪贴板后推荐加延时后再读取剪贴板,否则可能会出现读取错误的问题 mSleep(100