Автор оригинала: 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, можно получить из системных свойств.