【Java】【17】读取粘贴板的内容

前言:对粘贴板的一些操作

package com.test.jvm.oom.design;

import java.awt.Image;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Reader;

public class Test {

    /**
     *1. 从剪切板获得文字。
     */
    public static String getSysClipboardText() {
        String ret = "";
        Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();
        // 获取剪切板中的内容
        Transferable clipTf = sysClip.getContents(null);

        if (clipTf != null) {
            // 检查内容是否是文本类型
            if (clipTf.isDataFlavorSupported(DataFlavor.stringFlavor)) {
                try {
                    ret = (String) clipTf
                            .getTransferData(DataFlavor.stringFlavor);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

        return ret;
    }

    /**
     * 2.将字符串复制到剪切板。
     */
    public static void setSysClipboardText(String writeMe) {
        Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
        Transferable tText = new StringSelection(writeMe);
        clip.setContents(tText, null);
    }

    /**
     *3. 从剪切板获得图片。
     */
    public static Image getImageFromClipboard() throws Exception {
        Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();
        Transferable cc = sysc.getContents(null);
        if (cc == null)
            return null;
        else if (cc.isDataFlavorSupported(DataFlavor.imageFlavor))
            return (Image) cc.getTransferData(DataFlavor.imageFlavor);
        return null;

    }

    /**
     * 4.复制图片到剪切板。
     */
    public static void setClipboardImage(final Image image)throws Exception {
        Transferable trans = new Transferable() {
            public DataFlavor[] getTransferDataFlavors() {
                return new DataFlavor[] { DataFlavor.imageFlavor };
            }

            public boolean isDataFlavorSupported(DataFlavor flavor) {
                return DataFlavor.imageFlavor.equals(flavor);
            }

            public Object getTransferData(DataFlavor flavor)
                    throws UnsupportedFlavorException, IOException {
                if (isDataFlavorSupported(flavor))
                    return image;
                throw new UnsupportedFlavorException(flavor);
            }

        };
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans,
                null);
    }

    /**
     * 5.通过流获取,可读取图文混合
     */
    public void getImageAndTextFromClipboard() throws Exception{
        Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();
        Transferable clipTf = sysClip.getContents(null);
        DataFlavor[] dataList = clipTf.getTransferDataFlavors();
        int wholeLength = 0;
        for (int i = 0; i < dataList.length; i++) {
            DataFlavor data = dataList[i];
            if (data.getSubType().equals("rtf")) {
                Reader reader = data.getReaderForText(clipTf);
                OutputStreamWriter osw = new OutputStreamWriter(
                        new FileOutputStream("d:\\test.rtf"));
                char[] c = new char[1024];
                int leng = -1;
                while ((leng = reader.read(c)) != -1) {
                    osw.write(c, wholeLength, leng);
                }
                osw.flush();
                osw.close();
            }
        }
    }
}

参考博客:

Java读取粘贴板内容 - 陈小兵 - 博客园
https://www.cnblogs.com/brant/p/8120294.html

原文地址:https://www.cnblogs.com/huashengweilong/p/10807170.html

时间: 2024-08-30 02:04:55

【Java】【17】读取粘贴板的内容的相关文章

在java中读取文件中的内容

1 package shi; 2 3 import java.io.*; 4 5 public class wenjianIO { 6 public static void main(String agrs[]){ 7 FileInputStream fis=null; 8 File f=new File("F:/test/javakc.txt"); 9 10 try { 11 fis=new FileInputStream(f); 12 byte[]arr=new byte[(int

【JS】【7】获取粘贴板的内容

前言:有时会有要获取剪切板内容的情况,我最开始有这个需求,不过后面放弃了,因为有兼容性的问题,在IE可行,在chrome和firefox不行.查到这篇博客做了兼容处理,就写在这里记录一下. 正文: //绑定在了body上,也可以绑定在其他可用元素行,但是不是所有元素都支持copy和past事件. $(document.body).bind({ copy: function(e) {//copy事件 var cpTxt = "复制的数据"; var clipboardData = win

Java 一次性读取或写入文件内容

public class IOHelper { public static void copy(Reader in,Writer out) throws IOException { int c = -1; while((c = in.read()) != -1) { out.write(c); } } public static String readFile(File file) throws IOException { if (file != null && file.canRead(

IE中操作粘贴板复制和粘贴

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

Gvim与系统粘贴板复制和粘贴操作

gvim如何复制和粘贴系统粘贴板的内容: 复制Gvim里面的内容至系统粘贴板:"+y 粘贴系统粘贴板里面的内容至Gvim:"+p

IOS 访问系统粘贴板

粘贴板提供了一种核心OS特性,用于跨应用程序共享数据.用户可以跨应用来复制粘贴,也可以设置只在本应用中复制粘贴用来保护隐私. UIPasteboard类允许访问共享的设备粘贴板以及内容,下面代码返回一般的系统粘贴板,它适合大多数一般的复制粘贴应用. UIPasteboard *pd = [UIPasteboard generalPasteboard]; 使用pasteboardWithUniqueName创建特定于应用程序的粘贴板,只有知道并且使用粘贴板名称键的应用程序能能够使用相同的粘贴板.

IDEA的粘贴板的一点问题

用的IDEA是 14.0.2, 在使用复制粘贴的时候, 有时出现很奇怪的 ,粘贴到的不是刚才复制的内容,而是之前复制的内容,这个问题大概是IDEA支持历史内容的粘贴 这个功能导致的, IDEA的历史粘贴板 支持粘贴之前5次粘贴过的历史内容, 因为历史粘贴板已经满了,所以当前复制的内容就进不了IDEA的粘贴板,解决办法就是  ctrl + shift + v ,弹出历史粘贴板,删掉历史粘贴板的内容,然后现在复制的内容就可以正常粘贴到IDEA的 编辑器了.

js实现复制内容到粘贴板

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <title>js复制内容到粘贴板</title> 6 <style> 7 .flex-r { 8 display: flex; 9 flex-direction: row; 10 align-content: center; 11 justify-content: spac

五种方式让你在java中读取properties文件内容不再是难题

一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC+Mybatis整合开发的项目中通过java程序读取properties文件内容的方式进行了梳理和分析,先和大家共享. 二.项目环境介绍 Spring 4.2.6.RELEASE SpringMvc 4.2.6.RELEASE Mybatis 3.2.8 Maven 3.3.9 Jdk 1.7 Id