Java中System的解析第三期

简介

  接着上回说的“标准”的错误输出流errSecurityManager(安全管理器)之后,本期来说说最后三个变量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中的函数方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秉承初心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值