Рубрики
Без рубрики

Как получить системные свойства в Java?

Как получить системные свойства в Java? Мы можем использовать системный класс для поиска всех системных свойств, в Java есть методы для получения определенного системного свойства.

Автор оригинала: Pankaj Kumar.

Системный класс в Java поддерживает набор свойств. Эти свойства хранятся в виде пар ключ/значение. Как ключи, так и значения являются строками, определяющими черты или атрибуты текущей рабочей среды.

Есть два метода, которые вы можете использовать для чтения системных свойств: getProperty() и GetProperties().

Получение всех системных свойств в Java

System.GetProperties() возвращает перечисление всех системных свойств. Следующий код выводит все системные свойства на консоль.

import java.util.Enumeration;
import java.util.Properties;

public class Main {

    public static void main(String[] args)
    {
        Properties p = System.getProperties();
        Enumeration keys = p.keys();
        while (keys.hasMoreElements()) {
            String key = (String)keys.nextElement();
            String value = (String)p.get(key);
            System.out.println(key + ": " + value);
        }
    }
}

Вывод в текстовой форме:

gopherProxySet: false
awt.toolkit: sun.lwawt.macosx.LWCToolkit
java.specification.version: 11
sun.cpu.isalist: 
sun.jnu.encoding: UTF-8
java.class.path: /Users/jayant/Desktop/java/JD1/out/production/JD1
java.vm.vendor: Oracle Corporation
sun.arch.data.model: 64
java.vendor.url: http://java.oracle.com/
user.timezone: 
os.name: Mac OS X
java.vm.specification.version: 11
sun.java.launcher: SUN_STANDARD
user.country: GB
sun.boot.library.path: /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/lib
sun.java.command: Main
http.nonProxyHosts: local|*.local|169.254/16|*.169.254/16
jdk.debug: release
sun.cpu.endian: little
user.home: /Users/jayant
user.language: en
java.specification.vendor: Oracle Corporation
java.version.date: 2018-10-16
java.home: /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home
file.separator: /
java.vm.compressedOopsMode: Zero based
line.separator: 

java.specification.name: Java Platform API Specification
java.vm.specification.vendor: Oracle Corporation
java.awt.graphicsenv: sun.awt.CGraphicsEnvironment
sun.management.compiler: HotSpot 64-Bit Tiered Compilers
ftp.nonProxyHosts: local|*.local|169.254/16|*.169.254/16
java.runtime.version: 11.0.2+7-LTS
user.name: jayant
path.separator: :
os.version: 10.14.2
java.runtime.name: Java(TM) SE Runtime Environment
file.encoding: UTF-8
java.vm.name: Java HotSpot(TM) 64-Bit Server VM
java.vendor.version: 18.9
java.vendor.url.bug: http://bugreport.java.com/bugreport/
java.io.tmpdir: /var/folders/56/fc29wjz520x_21fmrl9r2jgc0000gn/T/
java.version: 11.0.2
user.dir: /Users/jayant/Desktop/java/JD1
os.arch: x86_64
java.vm.specification.name: Java Virtual Machine Specification
java.awt.printerjob: sun.lwawt.macosx.CPrinterJob
sun.os.patch.level: unknown
java.library.path: /Users/jayant/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
java.vendor: Oracle Corporation
java.vm.info: mixed mode
java.vm.version: 11.0.2+7-LTS
sun.io.unicode.encoding: UnicodeBig
java.class.version: 55.0
socksNonProxyHosts: local|*.local|169.254/16|*.169.254/16

Process finished with exit code 0

Важные Системные Свойства

Некоторыми из важных системных свойств являются:

“файл.разделитель” Разделитель файлов (например, “/”)
“java.класс.путь” Путь к классу Java
“java.класс.версия” Номер версии класса Java
“ява.дом” Каталог установки Java
“ява”.” Строка, зависящая от поставщика Java
“java.поставщик.url” URL поставщика Java
“java.версия” Номер версии Java
“линия”.” Линейный сепаратор
“ос.арч” Архитектура операционной системы
“os.name” Имя операционной системы
“версия операционной системы” Версия операционной системы
“путь”.” Разделитель путей (например, “:”)
“пользователь.язык” Язык, используемый Пользователем
“пользователь.реж.” Текущий рабочий каталог пользователя
“пользователь.главная” Домашний каталог пользователя
“user.name” Имя учетной записи пользователя

Получение определенного системного свойства

Чтобы получить конкретное свойство из списка, используйте систему.Свойство(ключ). Где ключ-это имя свойства, которое вы хотите получить. Выходные данные возвращаются в виде строки. Если ключ свойства не совпадает, возвращается значение null.

public class Main {

    public static void main(String[] args)
    {
        System.out.println(System.getProperty("java.class.path"));
        System.out.println(System.getProperty("os.name"));
        System.out.println(System.getProperty("user.name"));
    }
}
/Users/jayant/Desktop/java/JD1/out/production/JD1
Mac OS X
jayant

Три свойства были распечатаны.

Существует еще один вариант, который позволяет указать, что должно быть напечатано в случае, если имя свойства не совпадает. Обратите внимание на разницу в четвертой и пятой строках в следующем:

public class Main {

    public static void main(String[] args)
    {
System.out.println(System.getProperty("java.class.path"));
System.out.println(System.getProperty("os.name"));
System.out.println(System.getProperty("user.name"));
System.out.println(System.getProperty("hello"));
System.out.println(System.getProperty("hello","property not found"));
    }
}
/Users/jayant/Desktop/java/JD1/out/production/JD1
Mac OS X
jayant
null
property not found

Четвертая строка возвращает значение null, так как “привет” не совпадает ни с одним именем свойства. Пятая строка возвращает строку, которую мы упомянули в коде “свойство не найдено”.

Вывод

Мы можем получить свойства системы, используя вышеупомянутые методы. Такую информацию, как версия Java в пользовательском, домашнем каталоге, имя поставщика Java, можно получить из системных свойств.