android文件讀取工具類,Android 下讀取Assets Properties操作封裝工具類

Android 下讀取Assets Properties操作封裝工具類

發布時間:2018-06-03作者:laosun閱讀(2081)

0f9e8264915948f7a1174b4a48c40c63.gif

為了方便使用,首先創建BaseApplication類,如下所示:import?android.app.Application;

import?android.content.Context;

/**

*?Created?by?sun?on?2018/5/28.

*/

public?class?BaseApplication?extends?Application?{

private?static?Context?mContext;

@Override

public?void?onCreate()?{

super.onCreate();

mContext?=?getApplicationContext();

}

public?static?Context?getInstance()?{

return?mContext;

}

}

創建Prop工具類

import?com.sunjs.application.BaseApplication;

import?com.sunjs.log.LOG;

import?java.io.IOException;

import?java.io.InputStream;

import?java.io.InputStreamReader;

import?java.util.Properties;

public?class?Prop?{

private?Properties?properties?=?null;

public?Prop(String?fileName,?String?encoding)?{

InputStream?inputStream?=?null;

try?{

inputStream?=?BaseApplication.getInstance().getAssets().open(fileName);

if?(inputStream?==?null)?{

LOG.e(Thread.currentThread().getStackTrace()[1].getClassName(),?"Properties?file?not?found?in?classpath:?"?+?fileName);

}

properties?=?new?Properties();

properties.load(new?InputStreamReader(inputStream,?encoding));

}?catch?(IOException?e)?{

LOG.e(Thread.currentThread().getStackTrace()[1].getClassName(),e,"Error?loading?properties?file.");

}?finally?{

if?(inputStream?!=?null)?try?{

inputStream.close();

}?catch?(IOException?e)?{

LOG.e(Thread.currentThread().getStackTrace()[1].getClassName(),e,?e.getMessage());

}

}

}

private?ClassLoader?getClassLoader()?{

ClassLoader?ret?=?Thread.currentThread().getContextClassLoader();

return?ret?!=?null???ret?:?getClass().getClassLoader();

}

public?String?get(String?key)?{

return?properties.getProperty(key);

}

public?String?get(String?key,?String?defaultValue)?{

return?properties.getProperty(key,?defaultValue);

}

public?Integer?getInt(String?key)?{

return?getInt(key,?null);

}

public?Integer?getInt(String?key,?Integer?defaultValue)?{

String?value?=?properties.getProperty(key);

if?(value?!=?null)?{

return?Integer.parseInt(value.trim());

}

return?defaultValue;

}

public?Long?getLong(String?key)?{

return?getLong(key,?null);

}

public?Long?getLong(String?key,?Long?defaultValue)?{

String?value?=?properties.getProperty(key);

if?(value?!=?null)?{

return?Long.parseLong(value.trim());

}

return?defaultValue;

}

public?Boolean?getBoolean(String?key)?{

return?getBoolean(key,?null);

}

public?Boolean?getBoolean(String?key,?Boolean?defaultValue)?{

String?value?=?properties.getProperty(key);

if?(value?!=?null)?{

value?=?value.toLowerCase().trim();

if?("true".equals(value))?{

return?true;

}?else?if?("false".equals(value))?{

return?false;

}

throw?new?RuntimeException("The?value?can?not?parse?to?Boolean?:?"?+?value);

}

return?defaultValue;

}

public?boolean?containsKey(String?key)?{

return?properties.containsKey(key);

}

public?Properties?getProperties()?{

return?properties;

}

}

創建讀取操作類

import?java.util.concurrent.ConcurrentHashMap;

/**

*?Created?by?sun?on?2018/5/28.

*/

public?class?PropKit?{

private?static?Prop?prop?=?null;

private?static?final?ConcurrentHashMap?map?=?new?ConcurrentHashMap();

private?PropKit()?{

}

public?static?Prop?use(String?fileName)?{

return?use(fileName,?Const.DEFAULT_ENCODING);

}

private?static?Prop?use(String?fileName,?String?encoding)?{

Prop?result?=?map.get(fileName);

if?(result?==?null)?{

//服務端并發時使用,這塊其實不用使用

synchronized?(PropKit.class)?{

result?=?map.get(fileName);

if?(result?==?null)?{

result?=?new?Prop(fileName,?encoding);

map.put(fileName,?result);

if?(PropKit.prop?==?null)?{

PropKit.prop?=?result;

}

}

}

}

return?result;

}

public?static?void?clear()?{

prop?=?null;

map.clear();

}

public?static?Prop?getProp()?{

if?(prop?==?null)?{

//默認加載config.properties文件

//這里的Const.default_config就是assets目錄下的config.properties

use(Const.default_config);

}

return?prop;

}

public?static?Prop?getProp(String?fileName)?{

return?map.get(fileName);

}

public?static?String?get(String?key)?{

return?getProp().get(key);

}

public?static?String?get(String?key,?String?defaultValue)?{

return?getProp().get(key,?defaultValue);

}

public?static?Integer?getInt(String?key)?{

return?getProp().getInt(key);

}

public?static?Integer?getInt(String?key,?Integer?defaultValue)?{

return?getProp().getInt(key,?defaultValue);

}

public?static?Long?getLong(String?key)?{

return?getProp().getLong(key);

}

public?static?Long?getLong(String?key,?Long?defaultValue)?{

return?getProp().getLong(key,?defaultValue);

}

public?static?Boolean?getBoolean(String?key)?{

return?getProp().getBoolean(key);

}

public?static?Boolean?getBoolean(String?key,?Boolean?defaultValue)?{

return?getProp().getBoolean(key,?defaultValue);

}

public?static?boolean?containsKey(String?key)?{

return?getProp().containsKey(key);

}

}

測試:

assets下有config.properties

內容如下:

login.url=

dev.mode=true

使用獲取方式如下:

String?loginUrl?=?PropKit.use("config.properties").get("login.url");

boolean?devMode?=?PropKit.getBoolean("dev.mode");

從上邊可以看出,.use是填寫的assets根目錄下的properties文件名稱,代碼中默認的文件名叫做config.properties,所以也可以不用寫.use,可以直接進行獲取。

af499b9437efec8e1b25c2bb396e60d7.png

0 +1

版權聲明

發表評論

請文明留言

發表

共 0 條評論

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529109.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529109.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529109.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python粘性拓展_如何將tkinter小部件置于粘性框架中

在google中使用“如何使tkinter網格擴展”,我遇到了這個問題。 引用布萊恩奧克利的話Rows and columns have "weight" which describes how they grow or shrink to fill extra space >in the master. By default a row or column has a weight of zer…

android 固件 編輯器,RK3288編譯 Android 5.1 固件

1 準備工作編譯 Android 對機器的配置要求較高:64 位 CPU16GB 物理內存交換內存30GB 空閑的磁盤空間用于構建,源碼樹另外占用大約 25GBUbuntu 14.04 操作系統八核i7,編譯完成需要一個半小時安裝 JDK 7:sudo apt-get install openjdk-7-jdkUbu…

python解壓到指定文件夾_在Python中壓縮和解壓文件

Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。 如果你已經使用計算機一段時間,你可能遇到了.zip擴展名的文件。它們是可以保存許多其他文件,文件夾和子文件夾的壓縮內容的特殊文件。這種類型的文件在使用互聯網…

android bar布局,Android學習路線(十)如何將Action Bar疊放在你的布局上

默認狀況下,action bar出如今activity窗口的頂部,略微減小了activity布局的總空間。若是你想隱藏或者顯示action bar,在這堂用戶體驗的課程中,你能夠經過調用htmlFigure 1. Gallerys action bar in overlay mode.android為了不在a…

geant4運行例子_Geant4--一次編譯,運行多個Run,極大提升模擬效率

文|梁佐佐應唐光毅博士/后之約,對于Geant4模擬,我們看是否能解決這么一個問題:我現在想模擬探測器不同角度下的響應,每次模擬需要/run/beamOn 100, 可是我真的不想一遍一遍的去http://DetectorConstruction.cc中修改幾…

python3.7基礎教程_關于本教程 |《Python 官方文檔:入門教程 3.7.0》| Python 技術論壇...

本文檔最新版為 3.8,舊版本可能放棄維護,推薦閱讀最新版! Python 入門教程 Python 是一門簡單易學且功能強大的編程語言。它擁有高效的高級數據結構,并能夠用簡單又有效的方式進行面向對象編程。Python 優雅的語法和動態類型&…

android listview countdowntimer,Android-ListView中的CountDownTimer隨機閃爍

我正在使用計時器制作列表視圖,每個計時器都有不同的截止日期,具體取決于數據庫(類似于拍賣)Time now new Time();now.setToNow();now.normalize(true);nowMillis now.toMillis(true);..String endtime a.get(position).get(TAG_ENDTIME);Integer tim…

echart實現3d地圖_3D飛線效果——讓線“飛”起來的秘密

在城市規劃、統計、交通等行業,地圖可視化已成為最直接也最吸引眼球的一種表達方式。例如人群遷徙、人口流動、OD出行、職住分析、客流來源等眾多場景都需要用到飛線效果呈現。2D飛線效果圖隨著可視化技術的進一步發展,傳統的2D飛線效果略顯單調&#xf…

ad域管理與維護_在NAS SMB卷上使用VisualSVN Server維護代碼庫

VisualSVN Server[1] 是 Windows 平臺上流行的 SVN 形式的代碼管理工具。以下我們將介紹把 NAS SMB 卷作為 VisualSVN 代碼庫存儲中心時會遇到的幾個問題以及相應的解決方法。1. 安裝錯誤的解決方法我們以 VisualSVN Server 3.3.1 版本為例,在安裝 VisualSVN Server…

android 開發art,Android應用開發之Android 系統啟動原理(art 虛擬機)

本文將帶你了解Android應用開發之Android 系統啟動原理(art 虛擬機),希望本文對大家學Android有所幫助。Android 系統啟動原理(art 虛擬機)一、虛擬機的啟動Android 是一個 Linux 的虛擬機,當虛擬機啟動的時候,會執行手機根目錄下的 init.r…

電腦文件夾可以分屏的軟件_電腦上什么便簽軟件可以添加音頻?

提及便簽,很多人都會很自然地想到手機便簽。這是因為隨著智能手機和移動互聯網的發展,現在很多手機上都有了系統自帶的便簽app。其實,除了手機便簽外,還有電腦便簽呢!這不,Win7及其以上版本的電腦上還有系統…

jsp form提交到后臺中文亂碼_JSP與servlet之間的數據傳遞

【51】Jsp與Servlet之間的傳值有兩種,一種是Jsp傳值給Sevlet,另一種是Servlet傳值給Jsp;使用request、response對象完成傳值,具體實現如下:Jsp與Servlet之間的傳值有兩種,一種是Jsp傳值給Sevlet&#xff0c…

android jni 中jnienv,android JNI中JNIEnv類型和jobject類型的解釋

JNIEXPORT void JNICALL Java_com_jni_demo_JNIDemo_sayHello (JNIEnv *env, jobject obj){cout<}對於這個方法參數中的JNIEnv* env參數的解釋:JNIEnv類型實際上代表了Java環境&#xff0c;通過這個JNIEnv* 指針&#xff0c;就可以對Java端的代碼進行操作。例如&#xff0c;…

yang模型中rpc_領域驅動模型(DDD)設計講解

一. 什么是領域驅動模型(DDD)&#xff1f;領域驅動模型一種設計思想&#xff0c;我們又稱為DDD設計思想。是一種為了解決傳統設計思想帶來的維護困難&#xff0c;溝通困難和交互困難而產生的一種新的思想。也解決了在部分公司中&#xff0c;一個項目組就是一套服務&#xff0c;…

鴻蒙系統操作界面跟蘋果很像,鴻蒙手機UI界面曝出!圖標擬物化、操作邏輯近似蘋果iOS13...

原標題&#xff1a;鴻蒙手機UI界面曝出&#xff01;圖標擬物化、操作邏輯近似蘋果iOS13?【IT爆料王-原創文章-具備版權效力】就在近日&#xff0c;筆者收到了網友的匿名私信&#xff0c;提供給筆者華為鴻蒙系統的UI界面截圖&#xff0c;以及搭載鴻蒙系統的華為手機的曝光圖片。…

python3中的int類型占64位,有沒有什么辦法來強制Python來使用64位整數的Windows?

I’ve noticed that whenever any integer surpasses 2^31-1 my number heavy code suffers a large slowdown, despite the fact I’m using a 64 bit build of Python on a 64bit version of Windows. This seems to be true on Python 2.7 and Python 3. I’ve read that Wi…

crtsiii型無砟軌道板_無砟軌道裂縫破損怎么修補

隨著高速鐵路、客運專線、城市地鐵的快速發展&#xff0c;無砟軌道軌道板&#xff08;道床板&#xff09;廣泛應用&#xff0c;但施工中和運營期都發現軌道板混凝土存在不同程度的微細裂縫&#xff0c;對無砟軌道造成了一定的病害。高鐵軌道板裂縫是不可避免的。為確保無砟軌道…

c調用python第三方庫_Python使用ctypes模塊調用DLL函數之C語言數組與numpy數組傳遞...

在Python語言中&#xff0c;可以使用ctypes模塊調用其它如C語言編寫的動態鏈接庫DLL文件中的函數&#xff0c;在提高軟件運行效率的同時&#xff0c;也可以充分利用目前市面上各種第三方的DLL庫函數&#xff0c;以擴充Python軟件的功能及應用領域&#xff0c;減少重復編寫代碼、…

妲己機器人怎么升級固件_臺灣重金設計的3D妲己,亮瞎了

大家還記得前幾天米醋分享的國內首檔二次元選秀&#xff0c;遭網友瘋狂吐槽&#xff1a;不知道怎么形容的丑&#xff01;當米醋看到了這檔綜藝的宣傳海報時瞬間被這一批選手的顏值所吸引&#xff01;太魔幻了&#xff01;沒成想看到3D人物效果時米醋卻被這盛世丑顏丑到裂開&…

go語言通道插入0_Go語言入門必知教程-通道

Golang提供了一種稱為通道的機制&#xff0c;用于在協程之間共享數據。當函數作為協程執行并發活動時&#xff0c;需要它們共享資源或數據&#xff0c;通道便充當協程之間的管道(管道)&#xff0c;提供一種確保同步交換數據的機制。需要在聲明通道時指定數據類型&#xff0c;可…