欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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命令行IO

相关标签: Java IO