Java命令行IO
程序员文章站
2022-07-16 15:21:50
...
Java命令行IO
程序通常从命令行运行,并在命令行环境中与用户交互。
Java平台以两种方式支持这种交互:
- 标准流
- 控制台。
标准流(Standard Stream)实现命令行IO
// 标准输入流
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一个字符串");
String line = br.readLine();
System.out.println("您输入的字符串是:" + line);
System.out.println("请输入一个整数:");
String str = br.readLine();
int num = Integer.parseInt(str);
System.out.println(num);
System.out.println("我的--");
System.out.println("-----------------------");
PrintStream ps=System.out;
ps.println("我的二");
ps.println();
System.out.println("-----------------------");
控制台类Console实现命令行IO
- 标准流的一种更高级的替代方法是控制台。这是Console类型的单个预定义对象,它具有Standard Streams提供的大多数功能以及其他功能。控制台对于安全密码输入特别有用。 Console对象还通过其reader和writer方法提供了输入和输出流,它们是真实的字符流。
- 在程序可以使用控制台之前,它必须尝试通过调用System.console()来检索Console对象。如果Console对象可用,则此方法返回它。如果System.console返回NULL,则由于操作系统不支持控制台操作或由于该程序是在非交互式环境中启动的,因此不允许进行控制台操作。
- Console对象通过其readPassword方法支持安全密码输入。此方法以两种方式帮助保护密码输入。首先,它抑制了回显,因此密码在用户屏幕上不可见。其次,readPassword返回一个字符数组,而不是字符串,因此可以覆盖密码,并在不再需要时将其从内存中删除。
public class A {
// 验证登陆的账户和密码
static boolean verify(String login, char[] password) {
// colde
return true;
}
// 修改密码方法
static void change(String login, char[] password) {
}
public static void main(String[] args) throws IOException {
// TODO 自动生成的方法存根
Console c = System.console();
if (c == null) {
System.err.println("No console");
System.exit(1);
}
String login = c.readLine("Enter your login:");
char[] oldPassword = c.readPassword("Enter your old password");
if (verify(login, oldPassword)) {
boolean noMatch;
do {
char[] newPassword1 = c.readPassword("Enter your new password");
char[] newPassword2 = c.readPassword("Enter your new password agagin");
// 验证密码是否一致
noMatch = !Arrays.equals(newPassword1, newPassword2);
if (noMatch) {
c.format("Password don't match.Try agagin.%n");
} else {
change(login, newPassword1);
c.format("password for %s changed.%n", login);
}
} while (noMatch);
}
}
}
通过Console类实现的命令行程序需要从命令行编译和运行
上一篇: java 命令行参数
下一篇: java命令行参数
推荐阅读
-
JDK1.9怎么安装配置?Java SE 9(JDK9)详细安装教程+环境变量配置方法
-
java中hashCode和equals什么关系,hashCode到底怎么用的
-
java中finally块儿是怎么工作的?有什么意义?
-
java中哪块代码或说什么代码应该放在try块中呢?
-
java中为什么接口中的属性和方法都默认为public?
-
java多线程关键字volatile、lock、synchronized
-
spring boot从redis取缓存发生java.lang.ClassCastException异常
-
java中如果我老是少捕获什么异常,如何处理?
-
java中如何能知道应该捕获什么样的异常?举例
-
java中如何用urlrewritefilter实现网站伪静态?