关于System.setIn(),能否夺取键盘控制。

  1. 小弟不才,看到这个的时候就瞎想到,会不会用这句话,使得键盘输入无效,所有的输入内容都是自己设定好的的一个文件中的内容。
  2. 编写一个简单的java文件是可以的,那如果是一个应用呢?
  3. 是不是在运行着jvm的地方都可以获得键盘控制?
阅读 2.2k
1 个回答

System.setIn 只是改变了当前应用的标准输入设备,你可以使用下面的例子:

public class SystemIn {
        public static void main(String[] args) {
            try {
                InputStream ps = new FileInputStream(pathToSomeFile);
                System.setIn(ps);
                Scanner scanner = new Scanner(System.in);
                String line = "";
                while (scanner.hasNextLine()) {
                    line = scanner.nextLine();
                    System.out.println(line);
                    Thread.sleep(TimeUnit.SECONDS.toMillis(10));
                }
            } catch (FileNotFoundException | InterruptedException e) {
                e.printStackTrace();
            }

        }
}

在程序运行期间,再启动另一份代码:

public class NewSystemIn {

    public static void main(String ...args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLine()) {
            System.out.println(scanner.nextLine());
        }
    }
}

在程序1输出自定义输入设备中的内容时,程序2依旧表现正常(能读取键盘的输入)。

键盘不会这么轻松实现的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题