`
daoqidelv
  • 浏览: 28168 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

java中读取properties文件方法的注意事项

阅读更多
CSDN上有一篇很好的文章《 Java读取Properties文件的六种方法》,http://blog.csdn.net/senton/archive/2009/04/16/4083127.aspx。对java读取properties的方法做了总结,现在就自己在实际中遇到的问题进行下补充。

首先简单描述下《 Java读取Properties文件的六种方法》:

1。使用java.util.Properties类的load()方法
2。使用java.util.ResourceBundle类的getBundle()方法
3。使用java.util.PropertyResourceBundle类的构造函数
4。使用class变量的getResourceAsStream()方法
5。使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法
6。使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法


问题现象:
在eclipse开发环境下,程序能正常地读取properties文件,但是将工程打成jar包后,放到服务器上执行,报错“找不到系统文件:XXXX.properties”。XXXX.properties放置于工程的根目录下,代码中读取properties文件的方法是使用的上面博文中的法一:
InputStream in = new BufferedInputStream(new FileInputStream(”\\XXXX.properties“));
pro.load(in);


分析过程:
在File.Class的API中有这样一句话:“默认情况下,java.io 包中的类总是根据当前用户目录来解析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录。”在代码中加入:
String userDir = System.getProperty("user.dir");

发现IDE环境下的“user.dir”为当前工程的根目录,所以能够执行,它的效果就相当于:
String userDir = System.getProperty("user.dir");
InputStream in = new BufferedInputStream(new FileInputStream(userDir +“\\XXXX.properties”));  //相当于加上“user.dir”的绝对路径
pro.load(in);

而当使用java脚本启动java程序时,“user.dir”是java程序启动的当前目录,于是将启动脚本放到和jar包同一目录下,成功!

之后,将properties放到包内,再次打包,报错。说明使用File去读取包内的文件是会出错的,因为在$user.dir$路径下并不存在独立的XXXX.properties。改而使用《 Java读取Properties文件的六种方法》介绍的法六和法四,执行通过,代码如下:
//方法五
InputStream in = ClassLoader.getSystemResourceAsStream("XXXX.properties");
//方法六
//InputStream in = Object.class.getResourceAsStream("/XXXX.properties");
pro.load(in);


结论:
properties的读取方法受到文件放置的位置的影响。当properties位于jar包内部时,使用法五和法六,当properties位于jar包外部时,使用法一,同时将java启动脚本放在jar包的同一目录下面或者在同一目录下启动java程序。

其他三种方法没有尝试。
分享到:
评论

相关推荐

    java读取properties配置文件

    本文将详细介绍如何在Java中读取`properties`配置文件。 首先,我们需要了解`properties`文件的格式。一个标准的`.properties`文件通常包含多个行,每行由一个键和一个值组成,它们之间用等号(`=`)或冒号(`:`)...

    android中读取properties文件

    在Android开发中,读取`properties`文件是一个常见的任务,主要用于存储配置信息或者与Java中的`.properties`文件进行交互。`.properties`文件是一种简单的键值对格式,常用于跨平台的配置存储。以下是对这个主题的...

    java读取properties文件的方法

    本篇文章将深入探讨如何在Java中读取Properties文件,以及相关的关键技术和注意事项。 首先,Properties类是Java用于处理属性列表的工具类,它可以加载和保存键值对的数据。以下是一个简单的例子,演示了如何读取...

    excel与properties文件相互转换

    Excel是一种广泛用于数据处理和分析的电子表格工具,而Properties文件则常见于Java开发中,用于存储配置信息。两者之间的相互转换能提升工作效率,特别是在处理大量配置数据时。 Excel文件(.xlsx或.xls)是...

    java对properties文件的操作

    - 文件路径问题:在读写Properties文件时,确保提供正确的相对或绝对路径。 - 编码问题:Properties文件默认使用ISO-8859-1编码,如果包含非ASCII字符,需要使用`load(new InputStreamReader(inputStream, "UTF-8...

    怎样读取properties文件内容

    ### 如何使用Java读取properties文件内容 在Java开发中,`properties`文件是一种非常常见的配置文件格式,它主要用于存储程序的各种配置信息。通过这种方式,可以实现程序与配置的分离,便于维护和调整。本文将详细...

    java 读取资源文件

    本文将深入探讨如何使用Java读取资源文件,特别是properties类型的文件。 资源文件通常存储在项目的类路径(classpath)下,可以是.properties、.txt、.xml等形式,它们提供了与代码分离的配置选项。对于....

    Java读取资源文件时内容过长与换行的处理

    ### Java读取资源文件时内容过长与换行的处理 ...这些方法可以让properties文件更加整洁、易读,并且在Java程序中也能正确地获取到完整的属性值。掌握这些技巧对于日常的Java开发工作非常有帮助。

    JAVA操作properties文件.pdf

    在Java编程中,操作`.properties`文件是一种常见需求,主要利用`Properties`类实现,该类继承自`Hashtable`并实现了`Map`接口。`.properties`文件通常用作存储键值对(key-value pairs),它们是平台独立的配置文件...

    J2SE API读取Properties文件六种方法

    ### J2SE API读取Properties文件六种方法 在Java开发过程中,经常需要读取配置文件来获取系统运行时所需的参数或配置信息。`Properties`类是Java标准库中的一个非常重要的工具类,用于处理键值对形式的配置数据。...

    使用Properties类来读取配置文件

    本篇文章将深入探讨如何使用Java中的`java.util.Properties`类来读取这些配置文件,包括基本用法、方法解释、代码示例及测试案例。 `Properties`类是Java标准库的一部分,专门设计用来处理键值对的存储,常用于存储...

    Birt改变properties文件,在报表的initialize函数中

    在BIRT报表脚本中,首先需要导入处理properties文件所需的Java包,如`java.util.Properties`用于管理属性集,`java.io.File`和`java.io.FileInputStream`以及`java.io.FileOutputStream`用于文件读写操作。...

    JAVA读取配置文件源码

    在Java编程中,读取配置文件是常见的任务,它允许我们分离程序的配置...以上就是Java中读取配置文件的基本方法和示例,希望对你有所帮助。实际项目中,还可以结合Spring框架或其他依赖注入框架,实现更灵活的配置管理。

    java读取ini文件

    ### Java读取INI文件知识点详解 #### 一、概述 在Java编程中,经常会遇到需要读取配置文件的情况。配置文件通常用于存储程序运行时所需的参数设置,如数据库连接信息、系统路径等。INI文件是一种常见的配置文件...

    java中Properties文件加载和使用方法

    Java中的Properties类是Java语言用来处理属性列表的工具类,它是HashTable的子类,主要用于读取和存储配置文件中的键值对数据。这些配置文件通常用于存储应用的配置信息,如数据库连接字符串、系统参数等。...

    Android 读取Properties

    本篇将详细介绍如何在Android应用程序中读取Properties文件,并提供相关的实践步骤和技术要点。 1. **Properties文件格式** Properties文件是以键值对形式存储数据的文本文件,每行一个键值对,键和值之间用等号...

    Java 读取资源文件

    在Java编程中,读取资源...以上就是Java中读取资源文件的基本方法和注意事项。在实际开发中,根据项目结构和需求,你可能需要选择最适合的方法来访问和处理资源文件。理解这些概念将有助于提升你的代码质量和可维护性。

    java上传本地文件到oss指定目录

    而`使用说明.doc`则可能包含了更详细的使用指南和注意事项,包括如何配置阿里云账号、如何正确设置文件路径,以及遇到问题时的解决办法。 总之,Java上传本地文件到阿里云OSS涉及到的知识点包括:阿里云OSS服务的...

    javashop安装过程及注意事项

    Javashop是一款基于Java技术开发的电商系统,对于初学者来说,了解其安装过程和注意事项至关重要。以下是对Javashop安装步骤的详细说明,以及可能遇到问题的解决方案。 1. **导入项目**: 首先,你需要将Javashop...

    JAVA读取环境变量

    #### 注意事项 1. **异常处理**: - 在调用 `getEnv()` 和处理输出时都应考虑异常情况。 - 需要捕获并妥善处理可能出现的各种异常。 2. **兼容性问题**: - 虽然本例提供了针对Windows和Linux的操作命令,但在...

Global site tag (gtag.js) - Google Analytics