在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.2\JRE
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安装目录、用户名称等系统内容具有读的权限。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/frankzcy/archive/2010/05/28/5630215.aspx
分享到:
相关推荐
在Java编程中,获取系统属性是一项重要的任务,它允许开发者获取关于操作系统、JVM以及用户环境的详细信息。Java提供了一个名为`Properties`的类,它继承自`Dictionary`,进一步扩展了`Hashtable`,用于处理键值对,...
Java系统属性主要存储在`System`类中的`Properties`对象里,通过调用`System.getProperties()`方法可以获得所有系统属性的集合。系统属性通常包含以下几类信息: - **操作系统信息**:如操作系统名称(`os.name`)、...
在Java编程中,环境变量和系统属性是两种不同的概念,它们各自有着不同的用途和获取方法。环境变量是操作系统用来指定系统运行环境的一些参数,如临时文件目录等。系统属性则是Java运行时环境(JRE)提供的、关于...
在上述代码中,`main`方法展示了如何遍历并打印所有系统属性。首先通过`System.getProperties()`获取属性列表,然后通过`Properties`对象的`stringPropertyNames()`方法获取属性键的集合,再通过迭代器遍历键值对,...
本篇文章将深入探讨如何使用Java反射来获取一个类的所有属性、方法,并处理List集合类。 首先,让我们了解Java反射的基础概念。在Java中,`java.lang.Class`类代表运行时的类信息。我们可以使用`Class.forName()`...
本文将深入解析如何利用Java内置的`System`类和`Properties`对象来获取一系列关键的系统属性,包括Java运行时环境、操作系统和用户信息等。 ### Java运行时环境信息 首先,通过`System.getProperties()`方法,我们...
在IT领域,特别是Java编程中,读取PDF文件的元数据是一项常见的需求,尤其是在文档管理、内容管理系统或任何需要处理大量文档的应用场景中。本文将深入探讨如何使用Java读取PDF文件的属性,如作者、标题等元数据,...
### Java获取系统参数规格 #### 1. 获取Java版本 ```java System.out.println("Java版本:\n" + System.getProperty("java.version")); ``` 该命令返回当前正在运行的Java虚拟机(JVM)的主要版本号,例如`1.8.0_251...
通过上述内容可以看出,Java提供了丰富的系统属性来帮助开发者获取运行时环境的相关信息。这些信息对于调试代码、适配不同操作系统以及优化程序性能都极为重要。开发人员可以根据需要选择合适的系统属性来获取所需的...
### Java获取系统时间详解 在Java编程语言中,获取系统时间是一项非常基本且重要的功能,尤其是在需要记录事件发生的时间、实现定时任务或是进行日期时间相关的计算时。本文将基于提供的代码示例,深入探讨如何在...
本文将深入探讨如何在XP环境下利用Java来改变文件的属性,包括系统属性、隐藏属性、存档属性和只读属性。 首先,我们需要了解Java中与文件操作相关的类,主要是`java.io.File`类。`File`类提供了大量的静态和实例...
在Java编程语言中,"在父类获取子类属性"是一个常见的需求,特别是在设计模式、继承和多态性等核心概念的应用中。这个主题涉及到面向对象编程的基本原理,特别是子类继承父类后如何访问和操作子类特有的属性。下面...
要获取类的私有属性,我们需要先获得该类的`Class`对象,这可以通过`Class.forName()`方法或者`MyClass.class`的方式实现。然后,我们可以使用`getDeclaredFields()`方法获取类的所有声明的字段,包括私有的。这个...
在Java编程语言中,获取文件属性信息是一项基本且重要的任务,尤其在处理文件系统操作时。这个名为"Java得到文件属性信息.rar"的压缩包很可能包含一个或多个示例代码,用于演示如何在Java中获取文件的各种属性。下面...
2. **系统属性**: 要获取桌面路径,可以利用Java的系统属性。特别是`user.home`属性,它表示用户的主目录。通常,桌面路径是这个主目录下的一个子目录。例如,在Windows上,桌面路径可能是`user.home + "\Desktop"`...
通过File类可以获取文件路径、文件属性,而IO流则用于读取和写入文件内容。 4. **图片处理库**:为了显示和操作图片,系统可能依赖于Java的内置库如Java AWT或第三方库如Apache Commons Imaging(前身是Sanselan)...
在J2ME(Java 2 Micro Edition)平台上开发应用程序时,获取手机系统属性是一项重要的功能。这使得开发者能够根据设备的特性和环境调整程序的行为,提高用户体验。本篇将详细探讨如何在J2ME中获取手机系统属性以及...
// 获得系统属性集 String osName = props.getProperty("os.name"); // 操作系统名称 String osArch = props.getProperty("os.arch"); // 操作系统构架 String osVersion = props.getProperty("os.version"); // ...
本篇文章将深入探讨NDK开发中的一个重要话题:如何从C语言层面调用Java方法以及获取Java对象的属性。 首先,我们需要理解JNI(Java Native Interface),它是Java平台的标准本地接口,用于在Java代码和本地(非Java...
本篇文章将探讨如何利用Java获取CPU使用率、硬盘大小、网卡状态以及更广泛的系统信息。我们将主要关注一个名为"libsigar-x86-linux.so"的库文件,这是一个跨平台的系统信息获取工具——Sigar(System Information ...