java调用cmd程序,如何输入确认信息如y/n,或用户名密码
时间: 2024-09-26 17:07:58 浏览: 38
在Java中,如果你想通过命令行界面(Command Prompt/Shell)运行外部程序,并接收用户的输入,比如确认信息或用户名密码,你可以使用`Runtime.getRuntime().exec()`方法以及标准输入流(`System.in`)进行交互。下面是一个基本示例,展示如何从Java读取用户输入并传递给命令行程序:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
try {
// 执行外部命令,这里假设我们想询问是否继续 (y/n)
String command = "your_external_program.exe && read -p 'Do you want to continue? [y/n]: ' response";
// 创建进程
Process process = Runtime.getRuntime().exec(command);
// 获取进程的标准输入输出流
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedReader inputReader = new BufferedReader(new InputStreamReader(System.in));
// 读取并处理命令输出
String outputLine;
while ((outputLine = reader.readLine()) != null) {
System.out.println(outputLine);
}
// 请求用户输入
System.out.print("Please enter your choice (y/n): ");
String userInput = inputReader.readLine();
// 将用户输入写入进程作为确认
if ("y".equals(userInput.trim())) {
// 如果用户输入y,可以在这里添加将用户选择传递给命令的方式,取决于命令的具体结构
// process.getOutputStream().write(("yes".getBytes()); // 这里只是一个例子,实际需要根据命令协议调整
} else if ("n".equals(userInput.trim())) {
// 对于n,同样可以处理退出或者其他操作
} else {
System.out.println("Invalid input. Please enter y or n.");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
注意,这个示例假设外部程序能接受命令行参数并在完成时打印出提示,以便你读取。对于像用户名和密码这样的敏感信息,通常会在加密后传输,而不是直接明文显示。
阅读全文