Java--获取属性(System.getProperty)--方法/实例

原文网址:Java--获取属性(System.getProperty)--方法/实例_IT利刃出鞘的博客-CSDN博客

简介

说明

        Java可以在程序中获取属性,也可以获取环境变量(系统变量)。属性与Java程序有关,环境变量与Java所在的系统环境有关。

        因此,我们就可以通过在外部指定一些参数来控制程序的运行,也可以在程序中判断当前的环境(比如是Linux还是Windows)等。

        获取属性的方法:System.getProperty("属性名");获取环境变量的方法:System.getenv("环境变量名")。

        本文用实例介绍Java在程序中获取属性的方法。

System.getenv与System.getProperty的区别

属性(System.getProperty)环境变量(System.getenv
运行时是否可修改可以不可以
有效范围仅在java平台中有效系统里所有程序都有效
创建的时机打包应用时属性必须存在可以在任何时候创建环境变量

相关网址

System.getenv用法:Java--获取环境变量(System.getenv)--方法/实例_IT利刃出鞘的博客-CSDN博客

常用方法

方法作用
System.getProperties()获得所有属性
System.getProperty(String key)获得名为key的属性的值。
System.getProperty(String key, String def)获得名为key的属性的值,获取不到则将返回def这个默认值。

自定义属性

可以在命令行运行jar包时指定属性,例如:-Dpassword=abc123,然后就可以在程序中获取:

package com.example.a;

public class Demo {
    public static void main(String[] args) {
        String password = System.getProperty("password");
        System.out.println(password);
    }
}

先将程序打包为jar包,再运行它,即可获取到值。(-D必须在-jar之前指定)

打印所有的属性

可以通过以下程序获取所有属性:

package com.example.a;

import java.util.Properties;

public class Demo {
    public static void main(String[] args) {
        Properties properties = System.getProperties();
        properties.forEach((key, value) -> {
            System.out.println(key + ":" +value);
        });
    }
}

执行结果:

sun.cpu.isalist:amd64
sun.desktop:windows
sun.io.unicode.encoding:UnicodeLittle
sun.cpu.endian:little
java.vendor.url.bug:http://bugreport.sun.com/bugreport/
file.separator:\
java.vendor:Oracle Corporation
sun.boot.class.path:D:\dev\Java\jdk1.8.0_201\jre\lib\resources.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\rt.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\sunrsasign.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\jsse.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\jce.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\charsets.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\jfr.jar;D:\dev\Java\jdk1.8.0_201\jre\classes
java.ext.dirs:D:\dev\Java\jdk1.8.0_201\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
java.version:1.8.0_201
java.vm.info:mixed mode
awt.toolkit:sun.awt.windows.WToolkit
user.language:zh
java.specification.vendor:Oracle Corporation
sun.java.command:com.example.a.Demo
java.home:D:\dev\Java\jdk1.8.0_201\jre
sun.arch.data.model:64
java.vm.specification.version:1.8
java.class.path:D:\dev\Java\jdk1.8.0_201\jre\lib\charsets.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\deploy.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\ext\access-bridge-64.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\ext\cldrdata.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\ext\dnsns.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\ext\jaccess.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\ext\jfxrt.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\ext\localedata.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\ext\nashorn.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\ext\sunec.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\ext\sunjce_provider.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\ext\sunmscapi.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\ext\sunpkcs11.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\ext\zipfs.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\javaws.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\jce.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\jfr.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\jfxswt.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\jsse.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\management-agent.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\plugin.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\resources.jar;D:\dev\Java\jdk1.8.0_201\jre\lib\rt.jar;E:\work\Idea_proj\demo_Simple\demo_java\target\production\demo_java;D:\Program Files\JetBrains\IntelliJ IDEA 2021.2\lib\idea_rt.jar
user.name:Liu
file.encoding:UTF-8
java.specification.version:1.8
java.awt.printerjob:sun.awt.windows.WPrinterJob
user.timezone:
user.home:C:\Users\Liu
os.version:10.0
sun.management.compiler:HotSpot 64-Bit Tiered Compilers
java.specification.name:Java Platform API Specification
java.class.version:52.0
java.library.path:D:\dev\Java\jdk1.8.0_201\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;d:\Program Files\Git\cmd;D:\dev\Java\jdk1.8.0_201\bin;E:\work\maven\apache-maven-3.6.3\bin;D:\Program Files\mysql-8.0.21-winx64\bin;E:\work\npm\node_global;D:\dev\nodejs\;D:\dev\bigdata\hadoop-3.2.2\bin;D:\dev\bigdata\scala-2.12-13\bin;C:\Users\Liu\AppData\Local\Microsoft\WindowsApps;D:\Program Files\JetBrains\WebStorm 2021.1.3\bin;;D:\Program Files\dev\nvm\symlink;C:\Users\Liu\AppData\Roaming\npm;;.
sun.jnu.encoding:GBK
os.name:Windows 10
user.variant:
java.vm.specification.vendor:Oracle Corporation
java.io.tmpdir:C:\Users\Liu\AppData\Local\Temp\
line.separator:

java.endorsed.dirs:D:\dev\Java\jdk1.8.0_201\jre\lib\endorsed
os.arch:amd64
java.awt.graphicsenv:sun.awt.Win32GraphicsEnvironment
java.runtime.version:1.8.0_201-b09
java.vm.specification.name:Java Virtual Machine Specification
user.dir:E:\work\Idea_proj\demo_Simple\demo_java
user.country:CN
user.script:
sun.java.launcher:SUN_STANDARD
sun.os.patch.level:
java.vm.name:Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg:sun.io
path.separator:;
java.vm.vendor:Oracle Corporation
java.vendor.url:http://java.oracle.com/
sun.boot.library.path:D:\dev\Java\jdk1.8.0_201\jre\bin
java.vm.version:25.201-b09
java.runtime.name:Java(TM) SE Runtime Environment

默认属性及其含义

参数含义
java.versionJava 运行时环境版本               
java.vendorJava 运行时环境供应商             
java.vendor.urlJava 供应商的 URL                
java.homeJava 安装目录                    
java.vm.specification.versionJava 虚拟机规范版本               
java.vm.specification.vendorJava 虚拟机规范供应商             
java.vm.specification.nameJava 虚拟机规范名称               
java.vm.versionJava 虚拟机实现版本               
java.vm.vendorJava 虚拟机实现供应商             
java.vm.nameJava 虚拟机实现名称               
java.specification.versionJava 运行时环境规范版本            
java.specification.vendorJava 运行时环境规范供应商          
java.specification.nameJava 运行时环境规范名称            
java.class.versionJava 类格式版本号                 
java.class.pathJava 类路径                      
java.library.path加载库时搜索的路径列表             
java.io.tmpdir默认的临时文件路径                 
java.compiler要使用的 JIT 编译器的名称          
java.ext.dirs一个或多个扩展目录的路径           
os.name操作系统的名称                    
os.arch操作系统的架构                    
os.version操作系统的版本                    
file.separator文件分隔符(在 UNIX 系统中是“/” )
path.separator路径分隔符(在 UNIX 系统中是“:” )
line.separator行分隔符(在 UNIX 系统中是“/n” )
user.name用户的账户名称                    
user.home用户的主目录                      
user.dir用户的当前工作目录    

其他网址

Java System.getProperty 和 System.getenv 区别_neweastsun的专栏-CSDN博客

java 的 System.getenv() 和 System.getProperty()_jijianshuai的专栏-CSDN博客

Java中,`java.io.PrintWriter` 类是一个用于写入字符流的便捷类,它封装了字符输出流 `Writer` 的功能,提供了很多方便的方法用于输出文本数据,比如 `print`、`println` 和 `printf` 等。其中 `print` 方法用于输出一个指定的数据类型的数据,并且不自动换行,而 `println` 方法则会在输出内容后加上换行符。`java.lang.System` 类包含了一些与系统相关的方法,`getProperties` 方法就是其中之一,它用于获取当前系统的属性信息,返回一个 `Properties` 对象,这个对象是一个键值对集合,包含了如操作系统名称、用户目录路径等属性信息。 下面是一个简单的示例代码,演示如何使用 `PrintWriter` 来输出文本到标准输出,并结合 `System.getProperties()` 来显示系统的相关信息: ```java import java.io.PrintWriter; import java.util.Properties; public class PrintWriterExample { public static void main(String[] args) { // 创建PrintWriter实例,将输出绑定到标准输出System.out PrintWriter writer = new PrintWriter(System.out); // 使用print和println方法输出文本 writer.print("Hello, "); writer.println("World!"); // 使用println方法输出换行 writer.println(); // 获取系统属性并输出 Properties properties = System.getProperties(); properties.forEach((key, value) -> writer.println(key + " = " + value)); // 刷新输出流并关闭PrintWriter writer.flush(); writer.close(); } } ``` 在这个例子中,我们首先创建了一个 `PrintWriter` 对象,用于向标准输出写入数据。使用 `print` 方法输出了 "Hello, ",接着使用 `println` 方法输出了 "World!" 并换行。之后,我们调用了 `System.getProperties()` 方法获取系统属性,并通过迭代输出了所有属性的键值对。最后,我们调用 `flush` 方法刷新输出流,并关闭 `PrintWriter` 对象以释放资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IT利刃出鞘

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

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

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

打赏作者

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

抵扣说明:

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

余额充值