Java 将文本粘贴到外部文本编辑器

Java 将文本粘贴到外部文本编辑器,java,clipboard,notepad,Java,Clipboard,Notepad,我想做这里要求我做的事情:但是要用文本 我理解,如果不将文件保存在磁盘上的某个位置(可能是临时文件),就无法打开文件 我想问,是否可以采取另一种办法 另一种方法是: 1.创建字符串2。将其复制到剪贴板3。打开文本编辑器,4。将字符串粘贴到编辑器中 步骤1、2、3正常。第四步可以完成吗 一个想法:在windows中,可以从java应用程序运行一个bat文件,将其粘贴到记事本中。但是我更喜欢只使用java,并且与平台无关。步骤4可以完成。一种方法是使用Robot并模拟CTRL+V命令,如下所示:

我想做这里要求我做的事情:但是要用文本

我理解,如果不将文件保存在磁盘上的某个位置(可能是临时文件),就无法打开文件

我想问,是否可以采取另一种办法

另一种方法是: 1.创建字符串2。将其复制到剪贴板3。打开文本编辑器,4。将字符串粘贴到编辑器中

步骤1、2、3正常。第四步可以完成吗


一个想法:在windows中,可以从java应用程序运行一个bat文件,将其粘贴到记事本中。但是我更喜欢只使用java,并且与平台无关。

步骤4可以完成。一种方法是使用Robot并模拟CTRL+V命令,如下所示:

        Robot robot = new Robot();

        // For platform independence:
        int ctrlOrCmdKey = -1;
        if(System.getProperty("os.name").toLowerCase().contains("mac")) {
            ctrlOrCmdKey = KeyEvent.VK_META;
        } else {
            ctrlOrCmdKey = KeyEvent.CTRL_MASK;
        }

        robot.keyPress(ctrlOrCmdKey);
        Thread.sleep(10);
        robot.keyPress(KeyEvent.VK_V);
        Thread.sleep(10);
        robot.keyRelease(KeyEvent.VK_V);
        Thread.sleep(10);
        robot.keyRelease(KeyEvent.CTRL_MASK);

如果您试图将数据发送到正在创建的另一个应用程序,您也可以使用PipedInputStream/PipedOutStream,或者通过使用本地主机web套接字使用IP协议(这不是很干净,但可能)。

我不明白您的意思。我问第四步是否可行。不是1,2,3。你说的“其他人做我的工作”是什么意思?如果你从Java调用WIN32 API,这是可能的(只在WIN32上工作)。JNA是一种可以帮助解决这个问题的东西。看这个。然而,一旦你有了JNA,做粘贴是非常重要的,但是你肯定能做到。这是非平凡的,因为您需要了解如何将消息发送到其他应用程序来模拟粘贴。如果是这样的话,你为什么要排除它呢?很抱歉,他要求平台独立。我的错。将第4项实现为粘贴操作可能需要依赖于平台。[回复@geo的已删除注释]至少在我的GNU/Linux+LXDE框中,使用Leafpad作为文本编辑器,这正是发生的情况。注意,建议不要将数据保存到disk put,而是通过其标准输入流将其提供给编辑器进程。因此,编辑器将知道该文件未持久保存在磁盘上,并在退出时提示用户保存该文件。