简介
接着上回说的“标准”的错误输出流err和SecurityManager(安全管理器)之后,本期来说说最后三个变量Console(命令行)、Properties(访问外部定义的属性和环境变量)、lineSeparator(获取当前系统的行分隔符)。
具体分析
Console——命令行
官方解释
访问与当前Java虚拟机关联的基于字符的控制台设备(如果有的话)的方法。虚拟机是否具有控制台取决于底层平台,也取决于调用虚拟机的方式。如果虚拟机从交互式命令行启动,而不重定向标准输入和输出流,则其控制台将存在,并且通常将连接到启动虚拟机的键盘和显示器。如果虚拟机是自动启动的,例如由后台作业调度程序启动,那么它通常不会有控制台。
用法
import java.io.Console;
public class DirllSystemConsole {
public static void main(String[] args) {
// 声明变量
Console cons;
// 密码存储
char[] passwd;
// 判断是否从交互式命令行启动 如果是就读取密码
if ((cons = System.console()) != null
&& (passwd = cons.readPassword("[%s]", "Password:")) != null) {
//java.util.Arrays.fill(passwd, ' ');
// 输出密码
System.out.println("passwd");
for(int i=0;i<passwd.length;i++){
System.out.println(passwd[i]+"");
}
}
System.out.println("test success!");
}
}
从官方说明中只能通过“交互式命令行”启动,所以需要在cmd里面执行。
执行以下代码后键盘输入字符再按回车键即可,之后会显示输入的内容。
// 一般都文件的编码格式都是utf-8 所以保持编译一致。否则会出现“错误: 编码GBK的不可映射字符”
javac -encoding utf-8 DirllSystemConsole.java
// 执行编译后文件DirllSystemConsole.class
java DirllSystemConsole
结果
Properties——访问外部定义的属性和环境变量
官方解释
表示一组持久的属性。属性可以保存到流中或从流中加载。属性列表中的每个键及其对应值都是一个字符串。
用法
// 1.获取Java环境变量的属性
// 可能会出现权限问题,具体解决方式见第二期文章
Properties properties1 = System.getProperties();
System.out.println("环境变量组数:"+properties1.size());
// 2.问外部定义的属性
Properties properties2 = new Properties();
// 方便测试把配置文件放到编译后的文件夹下
FileInputStream fileInputStream = new FileInputStream(DirllSystem.class.getResource("").getPath()+"\\my.properties");
// 加载配置文件
properties2.load(fileInputStream);
// 读取配置文件
System.out.println(properties2.getProperty("name"));
System.out.println("测试完成!");
my.properties文件中的内容
name=chen
结果
lineSeparator——获取当前系统的行分隔符
官方解释
系统的行分隔符字符串。它始终返回相同的值-系统属性line.separator的初始值。在UNIX系统上,它返回“\n”;在Microsoft Windows系统上,它返回“\r\n”。
用法
System.out.print("第一行"+System.lineSeparator());
System.out.print("第二行");
System.out.print("第三行");
结果
结语
本期内容到此结束,下期来说说System中的函数方法。