`
bruce198
  • 浏览: 236336 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

在Java中获取系统属性

    博客分类:
  • java
阅读更多

               Java语言以其面向对象、跨平台、可移植性好、安全性高等优点,受到众多编程人员的青睐,越来越多

      的人将其作为应用软件开发语言的首选。

        在Java应用程序运行时,特别是需要在跨平台工作环境下运行时,需要确定操作系统类型、用户JDK版本和用户工作目录等随工作平台变化的信息,来保证程序正确运行。一般情况下,可以利用JDK提供的系统属性类(Properties)中的方法,快速地获取工作环境信息。另外,程序开发人员还可以定义与应用程序相关的系统属性文件,在用户程序执行过程中动态地加载程序员定义的属性文件来控制程序运行。
本文通过对系统属性类的分析,结合实际例子介绍如何定义系统属性文件,并讨论安全策略文件的定义。
属性类 Java Properties类的继承关系如下:
java.lang.Object
+--java.util.Dictionary
+--java.util.Hashtable
+--java.util.Properties
在应用程序开始执行时,程序首先读取系统的默认属性。如果定义了用户属性文件,则应用程序加载该属性文件。程序运行过程中可以根据执行情况动态地修改属性定义,并在程序结束运行前,保存属性文件。
获取属性的方法:
●contains(Object value)、containsKey(Object key):如果给定的参数或属性关键字在属性表中有定义,该方法返回True,否则返回False;
●getProperty(String key)、getProperty(String key, String default):根据给定的属性关键字获取关键字值;
●list(PrintStream s)、list(PrintWriter w): 在输出流中输出属性表内容;
●size():返回当前属性表中定义的属性关键字个数。
设置属性的方法:
●put(Object key, Object value) :向属性表中追加属性关键字和关键字的值;
●remove(Object key) :从属性表中删除关键字。
获取系统属性
系统属性是指与用户程序相关的操作系统配置信息以及软件信息。通常与用户程序相关的属性关键字包括:
●file.separator : 文件分隔符, Windows环境下为“,Unix环境下为“/”;
●user.home :用户主目录;
●java.home :Java实时运行环境的安装目录;
●java.ext.dirs :JDK的安装目录;
●os.name :操作系统名称;
●user.name :用户登录名称;
●os.version :操作系统版本;
●path.separator :当前操作系统的路径分隔符;
●user.dir :当前用户程序所在目录。
下面结合例子说明获取系统属性的方法。
/*getSystemProperties.java*/
import java.util.Properties;
public class getSystemProperties
{
public static void main(String args[])
{
//通过获得系统属性构造属性类 prop
Properties prop = new Properties(
System.getProperties() );
//在标准输出中输出系统属性的内容
prop.list(System.out);
}
//根据获取的系统属性确定程序执行流程
……
}
上述程序执行后,在Windows环境中产生类似如下的输出:
user.home=C:WIN95
java.home=D:JDK1.2JRE
java.ext.dirs=D:JDK1.2
os.name=Windows 95
user.name=Office
java.vm.name=Classic VM
os.version=4.10
path.separator=;
file.separator=
user.dir=D:JavaTest
属性文件的操作方法
Java程序开发人员可以通过定义属性文件来设置程序运行的参数。属性文件是程序外部文件,在应用程序初始运行时,可以通过读取属性文件来获取有关程序运行的参数。例如,在程序运行时需要在程序外部控制程序的执行流程,这时可以通过定义属性文件的方法达到目的。下面结合例子说明属性文件的操作方法:
/*PropertyFile.java*/
//引入相关类
import java.io.*;
import java.util.Properties;
public class PropertyFile
{
//定义文件输入和输出流
static FileInputStream fis;
static FileOutputStream fos;
public static void main(String args[])
{
//生成新的属性对象
Properties prop = new Properties();
try
{
//生成文件输入和输出流,输入流指向用户已经定义的属性文件,输出流指向由应用程序新定义的属性文件
fis = new FileInputStream
(“firstProp.txt”);
fos = new FileOutputStream
(“secondProp.txt”);
}
catch(FileNotFoundException e)
{
System.out.println(“Cannot create the file stream”);
}
try
{
//从输入文件加载系统属性
prop.load(fis);
//根据程序执行情况更改属性关键字的值
prop.put(“Switch”,“1”);
//输出新属性文件secondProp.txt
prop .save ( fos ,“-- a new properties file-”);
}
catch(IOException e)
{
System.out.println(“Exception in repleace the keyword”);
}
}
}
在程序执行之前,用户必须首先定义属性文件firstProp.txt,该文件内容如下:
Switch= 0
Version= 1.0
Directory= JavaTest
程序运行后,输出新的属性文件secondProp.txt,该文件内容如下(注意观察两个文件关键字Switch内容的区别):
#--a new properties file--
#Sun Mar 11 21:22:40 CST 2001
Switch= 1
Version= 1.0
Directory= JavaTest
从上例可以看出,通过JDK提供的属性类Properties可以方便地在程序外部对应用程序的执行流程进行控制,从而简化了编程难度,使程序流程可控性更好。
安全策略文件
Java提供的应用程序环境的安全策略,使得不同的代码对系统资源拥有不同的访问许可。Java应用程序安全策略由Policy对象来表达,通过定义安全策略文件来实现。Java 1.2的安全策略文件分为三级:系统安全策略文件、用户安全策略文件和缺省安全策略文件。当Java应用程序启动后,按照先后顺序加载安全策略内容。下面结合典型的安全策略文件内容对安全策略文件的定义进行说明:
grant
{
//对系统和用户目录设置“读”的权限
permission java.util.PropertyPermission “user.dir”,
“read”;
permission java.util.PropertyPermission “user.home”,“read”;
permission java.util.PropertyPermission “java.home”,“read”;
permission java.util.PropertyPermission “java.class.
path”,“read”;
permission java.util.PropertyPermission “user.name”,“read”;
//其他安全策略内容
};
上述安全策略文件定义了应用程序对用户目录、用户登录目录、JDK安装目录、用户名称等系统内容具有读的权限。
分享到:
评论

相关推荐

    在Java中获取系统属性.doc

    在Java编程中,获取系统属性是一项重要的任务,它允许开发者获取关于操作系统、JVM以及用户环境的详细信息。Java提供了一个名为`Properties`的类,它继承自`Dictionary`,进一步扩展了`Hashtable`,用于处理键值对,...

    java反射,获取所有属性、方法以及List集合类

    在Java中,反射主要用于在运行时分析类和对象,包括访问私有成员、调用私有方法、创建对象、获取类信息等。本篇文章将深入探讨如何使用Java反射来获取一个类的所有属性、方法,并处理List集合类。 首先,让我们了解...

    java读取pdf文件属性

    在Java中读取PDF文件属性主要依赖于开源库PDFBox。PDFBox是一个用于处理PDF文档的开源库,它提供了读取、写入、修改PDF文档的功能,而不仅仅局限于文本的提取。PDFBox的API设计简洁明了,易于上手,因此在Java开发...

    java获取系统参数

    在上述代码中,`main`方法展示了如何遍历并打印所有系统属性。首先通过`System.getProperties()`获取属性列表,然后通过`Properties`对象的`stringPropertyNames()`方法获取属性键的集合,再通过迭代器遍历键值对,...

    在父类获取子类属性

    在Java中,一个类(子类)可以继承另一个类(父类),通过关键字`extends`来实现。这样,子类就拥有了父类的所有非私有(public和protected)成员,包括字段(属性)和方法。但是,子类可能会添加自己的特有属性,...

    java获取当前系统信息

    本文将深入解析如何利用Java内置的`System`类和`Properties`对象来获取一系列关键的系统属性,包括Java运行时环境、操作系统和用户信息等。 ### Java运行时环境信息 首先,通过`System.getProperties()`方法,我们...

    详解Java获取环境变量及系统属性的方法

    需要注意的是,环境变量和系统属性在不同的操作系统中可能有所不同。例如,在Windows系统中,环境变量通常是不区分大小写的,而在UNIX系统中则区分大小写。另外,有些环境变量是用户自定义的,这些变量可能在不同...

    关于java获取操作系统信息

    在Java编程语言中,获取操作系统的信息对于环境配置、程序调试及兼容性测试等方面具有重要意义。本文将基于给定的文件信息,深入探讨如何利用Java来获取操作系统的关键信息,并对每一条命令及其返回值进行详细解释。...

    java获取系统参数规格

    此属性显示用于分隔文件路径中多个条目的字符,例如在Unix和Linux系统中使用冒号(:),在Windows系统中使用分号(;)。 #### 17. 获取行分隔符 ```java System.out.println("行分隔符:\n" + System.getProperty(...

    Java获得系统时间

    ### Java获取系统时间详解 在Java编程语言中,获取系统时间是一项非常基本且重要的功能,尤其是在需要记录事件发生的时间、实现定时任务或是进行日期时间相关的计算时。本文将基于提供的代码示例,深入探讨如何在...

    XP系统下使用Java更改文件属性

    本文将深入探讨如何在XP环境下利用Java来改变文件的属性,包括系统属性、隐藏属性、存档属性和只读属性。 首先,我们需要了解Java中与文件操作相关的类,主要是`java.io.File`类。`File`类提供了大量的静态和实例...

    Java得到文件属性信息.rar

    这个名为"Java得到文件属性信息.rar"的压缩包很可能包含一个或多个示例代码,用于演示如何在Java中获取文件的各种属性。下面将详细阐述如何在Java中访问和操作这些属性。 首先,我们可以使用`java.io.File`类来代表...

    NDK开发之C语言调用java方法和获取属性

    本篇文章将深入探讨NDK开发中的一个重要话题:如何从C语言层面调用Java方法以及获取Java对象的属性。 首先,我们需要理解JNI(Java Native Interface),它是Java平台的标准本地接口,用于在Java代码和本地(非Java...

    SuperMap Objects Java 属性更新

    本篇将详细讲解如何在Java环境中利用SuperMap Objects进行属性数据的更新操作,这对于数据分析、地图可视化以及地理信息系统的维护至关重要。 首先,我们需要了解`SuperMap Objects Java`。它是SuperMap GIS软件...

    java图片浏览管理系统

    2. **Swing或JavaFX**:在Java中,Swing和JavaFX是两个常用的图形用户界面(GUI)工具包,用于创建桌面应用程序。Java图片浏览管理系统可能使用了其中之一来构建用户界面,包括按钮、文本框、滚动条、菜单等元素。 ...

    java实现点名系统

    在本项目中,"java实现点名系统" 是一个基于Java技术栈的软件应用,它利用XML作为数据存储,Swing构建用户界面,并且通过DOM4J库解析XML,以确保点名过程中不会重复点到同一名学生。下面将详细阐述这个系统的关键...

    java 反射取得类的私有属性,通过私有属性取得属性值

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作对象的内部属性和方法,即使这些属性或方法是私有的。这篇博客文章可能讨论了如何利用反射机制来获取类的私有属性并读取其对应...

    java超市收银系统

    其次,输入输出流在Java中用于处理数据的读取和写入。在这个收银系统中,输入流可能用于读取用户输入的商品信息或从文件加载预设的商品数据,而输出流则用于显示收银台的结账信息,如总价、找零等。Java的...

    Java版文件系统

    3. **目录操作**:在Java中,`File`类不仅支持文件操作,也支持目录操作。可以创建、删除、列出目录中的文件和子目录,以及获取目录的属性。 4. **文件属性和权限**:通过`File`类的方法,可以获取文件的大小、创建...

Global site tag (gtag.js) - Google Analytics