如何使用Java从cli中读取消息正文的段落

如何使用Java从cli中读取消息正文的段落,java,cmd,Java,Cmd,我正在开发一个程序,该程序可以读取和写入一个Excel文件,其中包含不同公司的数据,例如其位置、电话号码和电子邮件地址。由于我还在大学学习,我还没有学习如何制作一个合适的界面,程序作为cmd窗口运行,每次你想进入下一行时,你都必须使用keyboard.nextLine()在程序的菜单中导航,编写文本 该计划的功能之一是使用相关电子邮件地址向特定公司或公司列表发送个性化邮件。当我要求用户编写消息的正文段落时,就会遇到困难。由于我正在使用keyboard.nextLine()进行输入,每次用户希望使

我正在开发一个程序,该程序可以读取和写入一个Excel文件,其中包含不同公司的数据,例如其位置、电话号码和电子邮件地址。由于我还在大学学习,我还没有学习如何制作一个合适的界面,程序作为cmd窗口运行,每次你想进入下一行时,你都必须使用
keyboard.nextLine()
在程序的菜单中导航,编写文本

该计划的功能之一是使用相关电子邮件地址向特定公司或公司列表发送个性化邮件。当我要求用户编写消息的正文段落时,就会遇到困难。由于我正在使用
keyboard.nextLine()
进行输入,每次用户希望使用“Intro”键进入下一行时,扫描仪都会停止读取。我可以制作一种方法,在用户说出之前一直将字符串输入添加到字符串变量中,但我希望用户能够完全自由地写入、重新写入和删除消息;所以使用这个想法对用户来说太烦人了

我曾经考虑过在用户必须写下文本时打开一个文本文件作为窗口,然后让程序将该文件写入一个字符串变量;但我一直未能成功地实现这一点。我尝试回收我找到的清除cmd窗口的方法,将
clear
命令更改为
text.txt
,但根本不起作用:

public static void openText(){

    try {
        if (System.getProperty("os.name").contains("Windows")) {
            new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
        } else {
            Runtime.getRuntime().exec("c:Body.txt");
        }
    } catch (IOException | InterruptedException ex) {}
}

因此,我想知道如何按照我的想法打开一个可编辑的文本窗口,或者如何打开另一个我没有想到的解决这个问题的方法。

你看过Swing吗

这并不比执行命令行交互难多少

基本上,您需要的是一个JFrame,其中包含一个JTextArea和一个“OK”按钮

下面是一个很好的示例,其中甚至有剪切/复制/粘贴按钮:
你看过Swing吗

这并不比执行命令行交互难多少

基本上,您需要的是一个JFrame,其中包含一个JTextArea和一个“OK”按钮

下面是一个很好的示例,其中甚至有剪切/复制/粘贴按钮:

是的,这可能有用。谢谢我甚至可以或多或少地理解这个例子,这样我就可以在我的程序中安全地实现它。我想知道如何实现我心中的想法,不过。。。出于好奇,这个解决方案比我想的要好得多;但是你知道,以防万一我将来可能需要它。仅使用java控制台API很难在cli中进行多行编辑。因此,您需要启动一个真正的文本编辑器,并为其提供一个临时文本文件。在Windows上,这可能是记事本,在linux系统上,您有nano或vi.Runtime.getRuntime().exec(“记事本c:\temp\Body.txt”)是的,这可能有效。谢谢我甚至可以或多或少地理解这个例子,这样我就可以在我的程序中安全地实现它。我想知道如何实现我心中的想法,不过。。。出于好奇,这个解决方案比我想的要好得多;但是你知道,以防万一我将来可能需要它。仅使用java控制台API很难在cli中进行多行编辑。因此,您需要启动一个真正的文本编辑器,并为其提供一个临时文本文件。在Windows上,这可能是记事本,在linux系统上,您有nano或vi.Runtime.getRuntime().exec(“记事本c:\temp\Body.txt”)