【Java小聪明编程】IWrite粘贴小助手——YouWrite

一、背景(一些屁话)

  事情是这样的,今天突然间想起来IWrite没有写。于是打开iwrite,禁用脚本,准备一如既往地复制粘贴。

  结果。。。一点用也没,禁用脚本的话,别说粘贴了,自己写都不行。

  明明上学期还能通过禁用脚本来粘贴的,这学期居然不行了,看来是系统升级了。

  但这能难得到我?

  破网站还要i write。那我偏不,我要you write。

  怀着这样的想法,跨世纪的工程——YouWrite诞生了。利用Java的IO流和Robot类型,解决了iwrite不能复制粘贴的世纪难题。

德川
我修院
  (上图是西安邮电大学因iwrite不能复制粘贴而面露难色的二人)

二、核心代码

  直接上代码:

package cn.unipus.youwrite;

import java.awt.*;
import java.awt.event.KeyEvent;
import java.io.*;

public class YouWrite {

	private static BufferedReader br;
	private static Robot r;

	private static void write(char ch) {

		/* 如果是小写字母 */
		if ('a' <= ch && ch <= 'z') {
			int temp = ch & 0xDF;
			r.keyPress(temp);
			r.keyRelease(temp);
			return;
		}

		/* 如果是大写字母 */
		if ('A' <= ch && ch <= 'Z') {
			r.keyPress(KeyEvent.VK_SHIFT);
			r.keyPress(ch);
			r.keyRelease(ch);
			r.keyRelease(KeyEvent.VK_SHIFT);
			return;
		}

		/* 如果是数字 */
		if ('0' <= ch && ch <= '9') {
			r.keyPress(ch);
			r.keyRelease(ch);
			return;
		}

		/* 其他字符 */
		try {
			r.keyPress(ch);
			r.keyRelease(ch);
		} catch (IllegalArgumentException e) {
			System.out.print(ch);
			System.out.println("字符非法,已跳过。");
		}

	}

	private static void init() {
		try {
			r = new Robot();
		} catch (AWTException e) {
			System.err.println("机器人创建失败");
			e.printStackTrace();
		}

		try {
			br = new BufferedReader(
					new InputStreamReader(
							new FileInputStream("text.txt")));
		} catch (FileNotFoundException e) {
			System.err.println("IO异常");
			e.printStackTrace();
		}
	}

	public static void write() {

		if (br == null) init();

		/* 缓冲区大小设置为1MB */
		char[] buffer = new char[512];
		int l = 0;

		try {
			/* 遍历输出流 */
			while ((l = br.read(buffer)) > 0) {
				for (int i = 0; i < l; i++) {
					write(buffer[i]);
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

  YouWrite类是一个不可实例化的类,其中只有一个write()静态方法是对外透明的,调用该方法后,程序会读取"text.txt"文件,并自动控制键盘输入文件中的内容。
陈睿
  (写完代码后累得昏撅的九死九歌)

三、使用方法

  我们再写一个主类:(或者你也可以把主函数放到YouWrite里边,随缘咯)

package cn.unipus.youwrite;

public class Main {

	public static void main(String[] args) {
		YouWrite.write();
	}

}

  创建一个"text.txt"的文件:
项目结构
  从某没良心的搜索引擎上copy一篇英文作文并粘贴到"text.txt"中:
英语作文
  回到Main中,直接运行。并把光标放到iwrite的输入框,像这样:(切记一定要切成英文输入)
iwrite
  过会儿后:
iwrite
  我们看看控制台:
控制台输出
  毕竟我这个代码的原理是分析字符对应的键盘按键并控制键盘键入,汉字的话还得分析汉字的拼音之类的,工程量太大了,直接跳过完事。
嘀嘟侠






最后编辑于1919年8月10日 11:45:14

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九死九歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值