1. 程式人生 > >關於JAVA中怎麼讀取和修改.properties檔案中的值

關於JAVA中怎麼讀取和修改.properties檔案中的值

第一種方式:

以我自己的專案為原型這裡案例一個最簡單的獲取方法

定義一個獲取類

package com.boli.tianchuang.sys.util;

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

/**
 * Desc:properties檔案獲取工具類
 * Created by 
 */
public class PropertyUtil {
    private static Properties props;
    static{
        loadProps();
    }

    synchronized static private void loadProps(){
        props = new Properties();
        InputStream in = null;
        try {
        	//第一種,通過類載入器進行獲取properties檔案流
        	//in = PropertyUtil.class.getClassLoader().getResourceAsStream("sysConfig.properties");
            //第二種,通過類進行獲取properties檔案流
            in = PropertyUtil.class.getResourceAsStream("/properties/sysConfig.properties");
            props.load(in);
        } catch (FileNotFoundException e) {
            //logger.error("sysConfig.properties檔案未找到");
        } catch (IOException e) {
            //logger.error("出現IOException");
        } finally {
            try {
                if(null != in) {
                    in.close();
                }
            } catch (IOException e) {
                //logger.error("sysConfig.properties檔案流關閉出現異常");
            }
        }
        //logger.info("載入properties檔案內容完成...........");
        //logger.info("properties檔案內容:" + props);
    }

    public static String getProperty(String key){
        if(null == props) {
            loadProps();
        }
        return props.getProperty(key);
    }

    public static String getProperty(String key, String defaultValue) {
        if(null == props) {
            loadProps();
        }
        return props.getProperty(key, defaultValue);
    }
}
下面是我的專案的檔案目錄

上面的類通過key就可以直接獲取value了

這裡特別注意的就是你的專案的檔案路徑了,這裡一定要寫對。

第二種方式:

檔案目錄與上圖相同,但是這裡我多了增加、修改功能,以下是程式碼和解釋

package com.boli.tianchuang.helper;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.util.Properties;

public class CeShi {  
	private static Properties prop;
	
	public static void load(String path){
		//這裡的path是專案檔案的絕對路徑
		//先獲取專案絕對路徑:Thread.currentThread().getContextClassLoader().getResource("").getPath();
		//然後在專案路徑後面拼接"properties/sysConfig.properties";
		prop= new Properties();// 屬性集合物件   
		FileInputStream fis;  
        try {  
        	System.out.println(path);
        	fis = new FileInputStream(path);
            prop.load(fis);
            fis.close();// 關閉流  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } 
	}
	
    //引數為要修改的檔案路徑  以及要修改的屬性名和屬性值  
    public static Boolean updatePro(String path,String key,String value){
    	if(prop==null){
    		load(path);
    		System.out.println("修改前重新載入一遍");
    	}
    	System.out.println("獲取新增或修改前的屬性值:"+key+"=" + prop.getProperty(key));
        prop.setProperty(key, value);   
        // 檔案輸出流   
        try {  
            FileOutputStream fos = new FileOutputStream(path);   
            // 將Properties集合儲存到流中   
            prop.store(fos, "Copyright (c) Boxcode Studio");   
            fos.close();// 關閉流   
        } catch (FileNotFoundException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
            return false;  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
            return false;  
        }  
        System.out.println("獲取新增或修改後的屬性值:"+key+"=" + prop.getProperty(key));
        return true;  
    }  
    
  //引數為要修改的檔案路徑  以及要修改的屬性名和屬性值  
    public static String getPro(String path,String key){  
    	if(prop==null){
    		load(path);
    		System.out.println("重新載入一遍");
    	}
        FileInputStream fis;  
        try {  
            fis = new FileInputStream(path);  
            prop.load(fis);// 將屬性檔案流裝載到Properties物件中   
            fis.close();// 關閉流  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        System.out.println("查詢到的"+key+"的值:"+prop.getProperty(key));
        return prop.getProperty(key);  
    }  
}


相關推薦

關於JAVA怎麼讀取修改.properties檔案

第一種方式: 以我自己的專案為原型這裡案例一個最簡單的獲取方法 定義一個獲取類 package com.boli.tianchuang.sys.util; import java.io.*; import java.util.Properties; /** * De

Java讀取並儲存EXCEL檔案圖片

/*     * 儲存excel中的圖片(以檔案形式儲存,或者存入資料庫)      *      * basePath:應用所在路徑,附件存放路徑:     * 引數:is是上傳的附件檔案流     */    public void saveSheetImgByFile(

maven 根據P引數值打包動態修改properties檔案或一定properties

由於本人 最近忙著公司事情,昨天沒有寫部落格,今天就繼續寫吧 需求:由於最近開發clover專案 ,沒有使用spring,更沒有使用任何框架,而使用J2EE的web工程,所以連線ZK和MongoDB、Redis等伺服器需用指定properties檔案, 而目前公司又分各套環

C#程式:如何修改xml檔案的節點(資料)(

要想在web等程式中實現動態的資料內容給新(如網頁中的Flash),不會更新xml檔案中的節點(資料)是遠遠不夠的,今天在這裡說一個簡單的xml檔案的更新,方法比較基礎,很適合初學者看的,保證一看就懂! ------------------程式環境下xml檔案中的節點、元

用ConfigurationManager讀取修改配置檔案

為了方便有時我們會把一些簡單的配置的資訊放入web.config檔案裡。 放到appSettings新增key   value等資訊。  ConfigurationManager.AppSettings["key"]來讀取對應key的value. 儲存的話。  Config

Spring配置讀取多個Properties檔案--轉

    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">       &

java讀取 *.properties檔案所有物件

這裡提供解析的輔助方法 package com.cms.util; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.Inpu

java web專案properties檔案的屬性在啟動後進行修改(資料庫密碼加密等)

public class DecryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer { private Resource[] locations; public void setLocations(

Java讀取classpath下的檔案

專案的工程目錄入如下: 從類路徑(classpath)下讀取檔案: 我們讀取resources目錄下的StringUtils.java檔案。 介紹幾種常見的方法: 1.使用絕對路徑法: File file = new File("D:\\ide

專案執行過程修改.properties檔案問題

專案執行過程中需要修改配置檔案的程式碼。菜鳥貼出記錄自己成長。。 /** showOu 要修改為的值    */ public void setAttribute(String value) {         OutputStream out = null;       

java讀取修改word的內容並儲存。

1.讀取word內容 2.修改要修改的內容 3.儲存word public Map readwriteWord(Map<String, String> map,String gcid,String deptid) { //查詢word模板

java——修改txt檔案某一行的內容

  今天無意間看到java.io中有一個類:RandomAccessFile,可以在檔案的任意位置進行讀寫操作,想到我之前寫的一個小專案,想在txt中修改某一行的內容,都是從頭遍歷txt檔案,修改這一行的同時,把整個檔案放入快取,再把修改後的內容重新寫入檔案,可以說是很蠢了,但一直沒找到好的辦法。   這個

讀取application.yml/application.properties的引數(或讀取自定義配置檔案的引數)

使用springboot搭建專案的話,如果程式碼裡需要讀取配置檔案資訊,動態生成資料該怎麼辦呢,其實可以直接寫到springboot配置檔案當中,自己定義標籤來讀取。 application.yml與application.properties有什麼不同呢? (1)yml檔案用縮排代替pro

java 讀取,修改properties檔案,不改變檔案內容順序

FileInputStream input1 = new FileInputStream("/jdbc.properties");//讀取程式碼 SafeProperties safeProp1 = new SafeProperties();

c++儲存讀取資料到txt檔案並用python畫圖

#include<fstream> #include<iostream> using namespace std; int main() { ofstream out("D://wang//test.txt");//寫資料到指定目標資料夾,這個資料夾

spring註解的方式讀取properties檔案的內容

在spring的配置檔案ApplicationContext.xml中加入. <!-- 載入所有的properties檔案,方便類中用spring註解方式獲取 --> <bean id="configProperties" class="org.spri

JavaProperties檔案寫入內容

String filePath = "H:\\final\\code\\Servlet_Ajax\\src\\test\\aa.txt"; Properties prop = new Properties(); try { InputStream fis

MyEclipseweb開發修改檔案配置檔案不重啟伺服器的方法

在java web實際開發中我們在修改配置檔案與java程式碼時往往會重新部署或者重新啟動tomcat伺服器,為了提高開發效率,現總結以下方法以在網路共享(高手莫看)  一 、修改struts2配置檔案不用重啟方法 方法1:  在src目錄下新建一個檔案struts.pro

jQuery .html()用為讀取修改元素的HTML標籤 對應js的innerHTML[通過ID獲取元素]

node2:/var/www/html/jquery/aa#cat a7.html <html> <body> <div id='ID'>測試頁面</div> <script type="text/javascript

spring xml讀取Properties檔案的加密欄位

spring的xml配置檔案,能夠方便地讀取properties檔案中的值。 讀取單個屬性檔案: <bean class="org.springframework.beans.factory.c