JavaSE_82_系统属性操作_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > JavaSE_82_系统属性操作

JavaSE_82_系统属性操作

 2014/4/23 21:32:11  hoonee  程序员俱乐部  我要评论(0)
  • 摘要:这里首先要说明的是,Java并不能够直接操作底层操作系统的属性,进行设置。这里的系统属性,指的是Java运行环境变量。在JDK与JRE在操作系统上进行安装的时候,已经对系统的各种环境信息进行辨析并记录在专门的文件里面。虽然说Java是与平台无关的语言,但是在一些特殊操作中,还是需要对当前进行运行的平台进行判断和分析,所以这方面的操作需要了解一些。在Java中,系统属性起到替代环境变量的作用,或者说,系统属性就是Java的环境变量,它是又一种将运行时Java程序的相关信息参数化的机制。具体的说
  • 标签:Java 操作 ASE
这里首先要说明的是,Java并不能够直接操作底层操作系统的属性,进行设置。这里的系统属性,指的是Java运行环境变量。



在JDK与JRE在操作系统上进行安装的时候,已经对系统的各种环境信息进行辨析并记录在专门的文件里面。



虽然说Java是与平台无关的语言,但是在一些特殊操作中,还是需要对当前进行运行的平台进行判断和分析,所以这方面的操作需要了解一些。



在Java中,系统属性起到替代环境变量的作用,或者说,系统属性就是Java的环境变量,它是又一种将运行时Java程序的相关信息参数化的机制。



具体的说,系统属性是一种“键--值”对,包括属性名、属性值及其映射关系,属性名和属性值均为String类型。环境变量(Path/CLASSPATH)也属于类似的情形,但它们是平台相关的。



常规的系统属性如下(属性名--对应属性值描述):
java.version     JRE版本
java.vendor      JRE提供商
java.vendor.url     Java提供商网址URL
java.home      JDK安装路径
java.vm.specification.version   JVM标准的版本
java.vm.specification.vendor   JVM标准的提供商
java.vm.specification.name   JVM标准的名称
java.vm.version     JVM的版本
java.vm.vendor     JVM的提供商
java.vm.name     JVM的名称
java.specification.version   JRE标准的版本
java.specification.vendor    JRE标准的提供商
java.specification.name    JRE 标准的名称
java.class.version     Java类格式版本号
java.class.path     Java类资源存储路径
java.ext.dirs     扩展路径
os.name      操作系统名称
os.arch      操作系统结构
os.version      操作系统版本
file.separator     文件分隔符("/" on UNIX)
path.separator     路径分隔符(":" on UNIX)
line.separator     换行符("\n" on UNIX)
user.name      用户名
user.home      用户home路径
user.dir      用户当前工作路径


除了这些内置的系统属性外,还可以通过在命令行中运行Java应用的时候,利用java 命令的-D 参数来加入一个自定义的系统属性:
java –D<name>=<value>



在Java中,有一个类专门用于处理属性:Properties。Properties类实现了从名字到值的映射。Properties类在java.util包中,这个类被用于以集合方式表述系统属性。

常用方法







public Enumeration propertyNames()
功能:可以返回以Enumeration类型表示的所有可用系统属性属性名






public String getProperty(String key)()
功能:获得特定系统属性的属性值


public Object setProperty(String key,String value)
功能:设置(添加)单个系统属性信息


public void load(InputStream inStream)
功能:可以实现从文件中读取属性信息


public void store(OutputStream out,String header)
功能:可以实现将系统属性信息写入文件



System类中和属性相关的功能







java.lang.System类中提供了和系统相关的功能,其中包括Properties:可以通过它的方法获得表示系统属性的Properties对象;通过指定的属性键返回对应属性值等。







常用方法







public static Properties getProperties()
功能:获得一个 Properties类的对象,其中包含了所有可用的系统属性信息






public static String getProperty(String key)
功能:获得特定系统属性的属性值


public static void setProperties(Properties props)
功能:设置系统属性信息


public static String setProperty(String key,String value)
功能:设置(添加)单个系统属性信息


下面我们来看一个系统属性的例子

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

public class TestProperties {
public static void main(String[] args) {
  Properties props = System.getProperties();
  Enumeration prop_names = props.propertyNames();

  while (prop_names.hasMoreElements()) {
   String prop_name = (String) prop_names.nextElement();
   String property = props.getProperty(prop_name);
   System.out.println("property '" + prop_name + "' is '" + property
     + "'");
  }
}
}


编译这个程序,用下列命令来运行这个程序:
java –Dtest=hello TestProperties


这个程序将会向控制台输出所有的系统属性,注意在这些属性中,有一个属性“test”,这个属性就是我们在执行这个应用程序的时候通过“-D”参数加入的一个属性。


在这里Properties的propertyNames()方法返回的是一个Enumeration对象,它是一个集合(Collection)类,在后面的内容中,将详细讨论这个类。



另外,除了默认的系统属性外,我们在编写应用软件时候,还可以把与应用相关的一些属性内容,写在专门的属性文件中,供应用程序进行读取使用,方便以后软件的运行维护,统一管理。



我们来看一个属性文件的例子:

FileName = c:/test/MyFile.txt
VirtualPath = myApp/


在这个属性文件中,设置了两个属性:“FileName”和“VritualPath”以及它们的相应的值。

在属性文件中设定属性后,可以在Java应用中使用类Properties的方法getProperty()读取这些设置在属性文件中的属性。



下面是一个保存了属性的文本文件,它用于保存连接数据库的一些属性配置:


oracle_url = jdbc:oracle:thin:@localhost:1521:O920
oracle_name = O920
oracle_user = scott
oracle_pwd = tiger
file_path = c:\\cctvfiles\\
virtual_path = examples/


这是一个属性文件的文件内容,其中定义了6个属性以及对应的属性值,它们以“名=值”的名值对形式存在,每行表示一个属性。

import java.util.*;
import java.io.*;

public class ReadPro {
private String oracle_url, oracle_name, oracle_user, oracle_pwd;

private String file_path, virtual_path;

public ReadPro() {
  try {
   Properties props = new Properties();
   File f = new File("C:\\OracleSetup.properties");
   FileInputStream in = new FileInputStream(f);
   props.load(in);
   in.close();
   oracle_url = props.getProperty("oracle_url");
   oracle_name = props.getProperty("oracle_name");
   oracle_user = props.getProperty("oracle_user");
   oracle_pwd = props.getProperty("oracle_pwd");
   file_path = props.getProperty("file_path");
   virtual_path = props.getProperty("virtual_path");
  } catch (IOException e) {
   System.out.println(e);
  }
}

public String getOracle_url() {
  return oracle_url;
}

public String getOracle_name() {
  return oracle_name;
}

public String getOracle_user() {
  return oracle_user;
}

public String getOracle_pwd() {
  return oracle_pwd;
}

public String getFile_path() {
  return file_path;
}

public String getVirtual_path() {
  return virtual_path;
}

public static void main(String args[]) {
  ReadPro rp = new ReadPro();
  System.out.println(rp.getOracle_user());
}
}


这个程序用于从属性文件中读取设置好的属性,这边用到了Properties类的load()方法,这个方法将指定的属性文件流装载到内存中来对它进行处理。通过Properties的getProperty()方法来读取指定名称的属性对应的值。
发表评论
用户名: 匿名