`
liuxi1024
  • 浏览: 390227 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

路径问题--web项目中读写properties文件

阅读更多

1、web项目中读properties文件,一般放到class根目录下web/WEB-INF/classes/

public static String FILE_PATH = "/comms.properties";
private InputStream inputFile;
private Properties propertie;

propertie = new Properties();
inputFile = getClass().getResourceAsStream(FILE_PATH);
propertie.load(inputFile);
inputFile.close();

 

2、向properties文件写入时,需要获取绝对路径才能写入操作

public void saveFile(String fileName, String description)
    {
    	String filePath = getClass().getResource("/").getPath()+fileName;
    	File file = new File(filePath);  
        try {
            outputFile = new FileOutputStream(file);
            propertie.store(outputFile, description);
            outputFile.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException ioe){
            ioe.printStackTrace();
        }
    }

 getClass().getResource("/").getPath() 为获取class的根目录

 

3、不过在web服务启动中,经常变动*.properties这种方式会重新加载web工程

package com.mts.util;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * 读取properties文件
 *
 */
public class PropertiesUtils
{
    private Properties propertie;
    private InputStream inputFile;
    private FileOutputStream outputFile;
    
    public static String FILE_PATH = "/mts.properties";
    
    /**
     * 初始化Configuration类
     */
    public PropertiesUtils()
    {
        propertie = new Properties();
    }
    
    /**
     * 初始化Configuration类
     * @param filePath 要读取的配置文件的路径+名称
     */
    public PropertiesUtils(String filePath)
    {
        propertie = new Properties();
        try {
        	inputFile = getClass().getResourceAsStream(filePath); 
            propertie.load(inputFile);
            inputFile.close();
        } catch (FileNotFoundException ex) {
            System.out.println("读取属性文件--->失败!- 原因:文件路径错误或者文件不存在");
            ex.printStackTrace();
        } catch (IOException ex) {
            System.out.println("装载文件--->失败!");
            ex.printStackTrace();
        }
    }//end ReadConfigInfo(...)
    
    /**
     * 重载函数,得到key的值
     * @param key 取得其值的键
     * @return key的值
     */
    public String getValue(String key)
    {
        if(propertie.containsKey(key)){
            String value = propertie.getProperty(key);//得到某一属性的值
            return value;
        }
        else 
            return "";
    }//end getValue(...)
    
    /**
     * 重载函数,得到key的值
     * @param fileName properties文件的路径+文件名
     * @param key 取得其值的键
     * @return key的值
     */
    public String getValue(String fileName, String key)
    {
        try {
            String value = "";
            inputFile = getClass().getResourceAsStream(fileName);
            propertie.load(inputFile);
            inputFile.close();
            
            if(propertie.containsKey(key)){
                value = propertie.getProperty(key);
                return value;
            }else
                return value;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return "";
        } catch (IOException e) {
            e.printStackTrace();
            return "";
        } catch (Exception ex) {
            ex.printStackTrace();
            return "";
        }
    }//end getValue(...)
    
    /**
     * 清除properties文件中所有的key和其值
     */
    public void clear()
    {
        propertie.clear();
    }//end clear();
    
    /**
     * 改变或添加一个key的值,当key存在于properties文件中时该key的值被value所代替,
     * 当key不存在时,该key的值是value
     * @param key 要存入的键
     * @param value 要存入的值
     */
    public void setValue(String key, String value)
    {
        propertie.setProperty(key, value);
    }//end setValue(...)
    
    /**
     * 将更改后的文件数据存入指定的文件中,该文件可以事先不存在。
     * @param fileName 文件路径+文件名称
     * @param description 对该文件的描述
     */
	public void saveFile(String fileName, String description) {
		String filePath = getClass().getResource("/").getPath() + fileName;
		File file = new File(filePath);
		try {
			outputFile = new FileOutputStream(file);
			propertie.store(outputFile, description);
			outputFile.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
	} 

}

 

分享到:
评论
2 楼 ghhpig 2010-12-01  
小问题请假下,为什么我的默认路径是在eclipse的安装目录下的?如何解决呢?谢谢
1 楼 zhangyuqing052 2010-04-12  
propertie.store(outputFile, description);
为什么往properties文件中写时会出现#开头?
Ex:
propertie.store(outputFile, "name=liuxi1024");

打开文件的结果是: #name = liuxi1024
帮忙解释一下,谢谢!

还有就是,怎么样直接往properties文件中写Map,需要自己重写方法吗?

相关推荐

    Python实现读取Properties配置文件的方法

    在Python编程中,有时我们需要处理Java开发中常用的`.properties`配置文件。虽然Python标准库并未直接提供处理此类文件的模块,但我们可以自定义一个类来实现这个功能。本篇文章将详细探讨如何通过Python来读取并...

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

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

    基于 MongoDB 及 Spring Boot 的文件服务器的实现

    在现代Web应用开发中,构建一个文件服务器是常见的需求,特别是在大数据存储和处理场景下。本项目基于MongoDB数据库和Spring Boot框架实现了一个文件服务器,旨在提供高效、可靠的文件存储和检索服务。以下将详细...

    JSP 中Spring的Resource类读写中文Properties实例代码

    为了解决这个问题,Spring的`Resource`类提供了`getInputStream()`方法,可以从类路径或者文件系统中获取输入流,然后我们可以通过这个输入流来加载`Properties`文件,确保中文字符的正确读取。 以下是一个使用`...

    web项目集群时共享session方案实践

    `WEB-INF`和`META-INF`目录通常包含Web应用的配置文件和类路径信息,它们可能涉及到Session共享的相关配置。 总的来说,Web项目集群时共享Session是一项重要的任务,它关系到用户体验和系统的可扩展性。理解并掌握...

    Android Jenkins文档2(使用及常见问题)

    - 如果使用的是 Android Studio,可以在项目的 `local.properties` 文件中指定 SDK 的路径。需要注意的是,这个文件通常不提交到版本控制系统中,因此需要在 Jenkins 中手动配置 SDK 的路径。 ##### 2.2 SDK 不存在...

    WEBSPHERE乱码问题的解决和处理

    - **-Djava.util.logging.config.file=<路径>/logging.properties**:通过配置文件来指定日志记录的编码格式,例如在`logging.properties`文件中设置`java.util.logging.FileHandler.encoding=UTF-8`。 ##### 2. ...

    tomcat日志文件

    - `WEB-INF/classes/logging.properties`:如果你不想使用全局的日志配置,可以在每个Web应用中提供自己的`logging.properties`文件。 3. **日志级别与切换**: - Tomcat支持JDK的日志框架,因此可以使用如`java....

    WEB工程页面提取工具

    在IT行业中,Web工程页面提取工具是一种非常实用的软件开发辅助工具,主要用于从大型Web项目中提取特定的页面或资源。这种工具可以帮助开发者快速定位并获取所需的文件,提高工作效率,尤其是在进行版本更新、代码...

    springboot项目架构

    6. **YAML/Properties配置**:SpringBoot支持使用YAML或Properties格式的配置文件,使得配置更易读写和管理。 7. **Spring Boot CLI**:命令行接口,用于快速创建和运行Spring Boot应用程序。 关于标签"ojdbc",这...

    文件上传到服务器和数据库

    在IT行业中,文件上传是常见的功能之一,尤其是在Web应用程序中。本示例主要涉及的是如何使用Java-Web技术,结合MVC(Model-View-Controller)设计模式,以及c3p0数据库连接池来实现图片的上传并将其存储在服务器上...

    获取路径的各种方法

    总之,掌握这些获取路径的方法,能够帮助开发者更好地管理文件系统和Web应用中的资源,提高程序的健壮性和灵活性。在实际编程过程中,根据场景选择适当的方法,不仅可以简化代码,还能避免因路径问题导致的运行时...

    cors-filter-2.6和java-property-utils-1.13

    标题 "cors-filter-2.6和java-property-...总之,"cors-filter-2.6和java-property-utils-1.13"是两个在Java Web开发中至关重要的工具,它们分别解决了跨域问题和配置管理的问题,为开发者提供了更高效的开发体验。

    将java应用包装成exe文件 方法中的一种

    在Java应用中,通常会使用配置文件(如.properties或.xml文件)来存储用户设置或应用程序配置。在转换为.exe时,我们需要确保这些配置文件能在运行时被读取和修改。一种常见做法是将配置文件放置在用户目录下,这样...

    springboot整合mybatis实现读写分离和jsp支持

    本教程将深入探讨如何在Spring Boot项目中整合MyBatis,实现数据库的读写分离,并且支持JSP页面的展示。 首先,我们要理解读写分离的概念。在高并发、大数据量的场景下,为了提高系统的性能和可用性,通常会将...

    初识java,用springBoot学习java

    - **IO流**:用于读写文件,网络通信等,包括字节流和字符流。 - **多线程**:Java内置对多线程的支持,通过Thread类或Runnable接口实现并发编程。 2. **Spring Boot入门** - **自动配置**:Spring Boot的核心...

    MyEclipse-开发环境工具常用配置集锦.docx

    同时,在Web项目中,需在Web.xml文件中添加如下配置以确保整个项目的编码统一: ```xml <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter....

Global site tag (gtag.js) - Google Analytics