1. 程式人生 > >android個人筆記(五)——解析ini檔案

android個人筆記(五)——解析ini檔案

package com.example.effecttest;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Properties;

import android.content.Context;

public class IniReaderHasSection {
        protected HashMap<String, Properties> sections = new HashMap<String, Properties>();
        private transient String section;
        private transient Properties properties;

        /*public IniReaderHasSection(String filename) throws IOException {
                BufferedReader reader = new BufferedReader(new FileReader(filename));
                read(reader);
                reader.close();
        }*/
        
        public IniReaderHasSection(String fileName) throws IOException{  
            //sections = new HashMap<String, Properties>();  
            BufferedReader reader = new BufferedReader(new FileReader(fileName));  
            read(reader);  
            reader.close();  
        }  
          
        /** 
         * 讀取asset檔案 
         * @param context 
         * @param iniPath 
         */  
        public IniReaderHasSection(Context context,String iniPath){  
            try{  
                //sections = new HashMap<String, Properties>();  
                InputStream inputStream = context.getResources().getAssets().open(iniPath);  
                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));  
                read(reader);  
                reader.close();  
            }catch(Exception ex){  
                ex.printStackTrace();  
            }  
              
        }

        protected void read(BufferedReader reader) throws IOException {
                String line;
                while ((line = reader.readLine()) != null) {
                        parseLine(line);
                }
        }

        protected void parseLine(String line) {
                line = line.trim();
                if (line.matches("\\[.*\\]")) {
                        section = line.replaceFirst("\\[(.*)\\]", "$1");
                        properties = new Properties();
                        sections.put(section, properties);
                } else if (line.matches(".*=.*")) {
                        if (properties != null) {
                                int i = line.indexOf('=');
                                String name = line.substring(0, i);
                                String value = line.substring(i + 1);
                                properties.setProperty(name, value);
                        }
                }
        }

        public String getValue(String section, String name) {
                Properties p = (Properties) sections.get(section);

                if (p == null) {
                        return null;
                }

                String value = p.getProperty(name);
                return value;
        }
}

ini檔案示例:

相關推薦

android個人筆記——解析ini檔案

package com.example.effecttest; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import j

《自己動手寫java虛擬機器》學習筆記-----解析class檔案go

         專案地址:https://github.com/gongxianshengjiadexiaohuihui   上一節,我們已經通過路徑找到了指定的class檔案,這一節,我們開始解析class檔案,我們知道class檔

Android入門筆記

五、ViewPager 5.1 ViewPager 的作用 為 UI 新增 ViewPager 後,使用者可以左右滑動螢幕,切換檢視不同列表項的明細頁面。 5.2 ViewPager 的實現 (1)建立佈局檔案,設定根元素為 ViewPager,可命名為:ac

Android學習筆記廣播Broadcast

5. 廣播 5.1 廣播 Android中的廣播主要分為兩種型別:標準廣播和有序廣播。 標準廣播:         是一種完全非同步執行的廣播,廣播發出後,所有的廣播接收器都會在同一時間內接受這條廣

Android學習筆記——通過全域性變數傳遞資料

1、全域性物件是Activity之間傳遞資料的一種比較實用的方式,比如在JavaWeb中有四個作用域,這四個作用域從小到大分別是Page、Request、Session和Application,其中Application域在應用程式的任何地方都可以使用和訪問,除非是Web伺

android個人筆記——JNI、C++字串轉換

//java字串轉C字串 char* Jstring2str(JNIEnv* env, jstring jstr) { char* pStr = NULL; jclass jstrObj = env->FindClass("java/lang/String"); js

《自己動手寫java虛擬機器》學習筆記-----解析class檔案java

專案地址:https://github.com/gongxianshengjiadexiaohuihui 註釋都寫的很清楚,有一些概念問題,請參考go版本的實現 目錄結構 首先是位元組轉換工具,因為java和go的類庫不同,另外需注意class檔案是大端儲存方式(高位元組放低地址,

Java NIO 學習筆記----路徑、檔案和管道 Path/Files/Pipe

目錄: Java NIO 學習筆記(一)----概述,Channel/Buffer Java NIO 學習筆記(二)----聚集和分散,通道到通道 Java NIO 學習筆記(三)----Selector Java NIO 學習筆記(四)----檔案通道和網路通道 Java NIO 學習筆記(五)----路徑

mybatis學習筆記- MyBatis 對映檔案(引數處理)

注意:本篇筆記內容承接上一篇 引數處理 1. 單個引數&多個引數&命名引數 簡介 單個引數:mybatis不會做特殊處理, #{引數名/任意名}:取出引數值。 多個引數:mybatis會做特殊處理。

安卓開發筆記——資料儲存SharedPreference以及Android中常見的檔案操作方法

中山大學資料科學與計算機學院本科生實驗報告 (2018年秋季學期) 一、實驗題目 個人專案3 資料儲存(一)應用開發 二、實現內容 第九周任務 實驗目的 學習SharedPreference的基本使用。 學習Android中

床頭筆記Android開發學習

執行第一個程式 好了,前幾篇已經把環境搭好了,專案建好了,然後目錄一些執行機制弄明白了,下面來執行開始體驗開發的樂趣吧。 eclipse連線夜神模擬器進行開發 用安卓自帶的模擬器啟動時間過長,反應慢,簡直不能忍,那為什麼不用別的安卓模擬器,本次使用夜神模擬器,去

阿里巴巴開發手冊解析個人筆記Mysql規約

文章目錄 1.建立資料庫 2. 建立表 2.1 建立名稱 2.2 建立索引 3.建立欄位 3.1 建立名稱 3.2 建立型別 4.sql的執行流程

阿里巴巴開發手冊解析個人筆記流程控制

註釋規範為純記憶,不再說明 1. 【強制】在一個 switch 塊內,每個 case 要麼通過 break/return 等來終止,要麼註釋說明程 序將繼續執行到哪一個 case 為止; 在一個 switch 塊內,都必須包含一個 default 語句並且 放在最後,即使空程式碼。

阿里巴巴開發手冊解析個人筆記集合處理

文章目錄 1. 【強制】 關於 hashCode 和 equals 的處理,遵循如下規則: 1) 只要重寫 equals,就必須重寫 hashCode。 2) 因為 Set 儲存的是不重複的物件,依據 hashCode 和 equals 進行判斷,所以 Set 儲存

阿里巴巴開發手冊解析個人筆記

文章目錄 1.2常量定義 1.3程式碼格式 1.4 OOP規約 1.2常量定義 1. 【強制】不允許任何魔法值(即未經預先定義的常量) 直接出現在程式碼中。 反例 String key = "Id#taobao

阿里巴巴開發手冊解析個人筆記

文章目錄 1.編碼規約篇 1.1命名風格 1.1.1 $與_ 1.1.2 拼音命名的壞處 1.1.3 駝峰命名規格 1.1.3.1駝峰命名

安卓開發學習筆記:史上最簡單且華麗地實現Android Stutio當中Webview控制元件https/http協議的方法

一.我們先在XML當中自定義一個webview(Second_layout.xml) 程式碼如下: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.an

Android學習筆記 通知Notification

Notification除了用於後臺服務通知,還常用在下面情況:(1)保持服務存在。當系統記憶體不足時,系統會認為某後臺服務佔用記憶體時間太長而中止該服務,以釋放記憶體。對於某些服務,例如播放音樂,如果系統對該服務進行資源釋放,使用者體驗就成了音樂突然沒有聲音。對這類服務,我們希望享有更高的優先級別,不會被系

Android學習筆記:位置Location

建議更新20130522的ADT版本,無論是Linux下還是Windows下,我覺得速度快了很多。而且將Android SDK Tool升級到ver 22版本後,原來的ADT有很多不明原因問題,載入App到模擬器上出現連線不上的情況。 允許應用具備定位功能 Location是手機功能的一大特色,衛星導航除了

Android開發筆記十六攝像頭拍照

相機Camera Camera是直接操作攝像頭硬體的工具類。常用的方法如下: getNumberOfCameras : 獲取本機的攝像頭數目 open : 開啟攝像頭,預設開啟後置攝像頭。如果有多個攝像頭,那麼open(0)表示開啟後置攝像頭,open(1)表示開啟前置攝像