導航:首頁 > 操作系統 > android讀寫ini文件

android讀寫ini文件

發布時間:2022-06-19 12:06:10

1. android中可以使用sharedpreferences類的實例完成文件讀寫操作嗎

很多時候我們開發的軟體需要向用戶提供軟體參數設置功能,例如我們常用的QQ,用戶可以設置是否允許陌生人添加自己為好友。對於軟體配置參數的保存,如果是window軟體,通常會採用ini文件進行保存;如果是 j2se應用,通常會採用properties屬性文件進行保存;如果是Android應用,Android 平台提供了一個SharedPreferences類,它是一個輕量級的存儲類,特別適合用於保存軟體配置參數。使用SharedPreferences保存數據,其背後是用xml文件存放數據,文件存放在/data/data//shared_prefs目錄下。
因為SharedPreferences背後是使用xml文件保存數據,getSharedPreferences(name,mode)方法的第一個參數用於指定該文件的名稱,名稱不用帶後綴,後綴會由Android自動加上。方法的第二個參數指定文件的操作模式,共有四種操作模式,這四種模式分別是:
Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容,如果想把新寫入的內容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有許可權讀寫該文件。
MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取;
MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入。
如果希望文件被其他應用讀和寫,可以傳入:
openFileOutput("123.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);

android有一套自己的安全模型,當應用程序(.apk)在安裝時系統就會分配給它一個userid,當該應用要去訪問其它資源(比如文件),就需要userid匹配。默認情況下,任何應用創建的文件,sharedpreferences資料庫都應該是私有的(位於/data/data //files),其它程序無法訪問。除非在創建時指定了Context.MODE_WORLD_READABLE或者 Context.MODE_WORLD_WRITEABLE ,只有這樣其它程序才能正確訪問。

另外Activity還提供了另一個getPreferences(mode)方法操作SharedPreferences,這個方法默認使用當前類不帶包名的類名作為文件的名稱。
如果訪問其它應用中的Preference,前提條件是該preference創建時指定了Context.MODE_WORLD_READABLE或 者Context.MODE_WORLD_WRITEABLE許可權。如有個為cn.itcast.action的應用使用下面語句創建了preference:
getSharedPreferences("123", Context.MODE_WORLD_READABLE);
其它應用要訪問上面應用的preference,首先需要創建上面應用的Context,然後通過Context 訪問preference ,訪問preference時會在應用所在包下的shared_prefs目錄找到preference。如果不通過創建Context訪問其他應用的preference,可以以讀取xml文件方式直接訪問其他應用preference對應的xml文件,如:
File xmlFile = new File(「/data/data//shared_prefs/itcast.xml」);//應替換成應用的包名

2. 安卓手機用文本編輯器 可以打開ini文件編輯的

需要改後綴名:用自帶的記事本或安裝的word打開更改後綴為.docx的ini文件,編輯完成後,重新更改後綴為.ini。

Mac OS X 在磁碟下的應用程序文件夾或Launchpad(Mac OS X Lion 10.7或以上)中找到文本編輯.app(源名稱:TextEdit.app),打開後就可以新建文稿並實施編輯。

文本編輯支持多信息文本格式(.rtf)、帶附件的多信息文本格式(.rtfd)、(.html)、Web歸檔(.webarchive)、OpenDocument 文本(.odt)、Word 2007 格式(.docx)、Word 2003 格式(.xml)。

(2)android讀寫ini文件擴展閱讀:

有些文本編輯器短小精悍,也有些文本編輯器提供了豐富、復雜的功能。例如,Unix和類Unix操作系統都提供了vi編輯器(或者是它的變種),但是也有部分操作系統提供了Emacs編輯器。Windows系統提供了非常簡單的記事本。

但是很多人,尤其是那些程序員們卻更喜歡Windows下功能更豐富的其它編輯器。在Apple Macintosh的經典Mac OS中,包含了SimpleText,後來,TextEdit替代了它。有些編輯器支持兩種操作模式,既可以當做文本編輯器,又可以當做文字處理器,WordStar就是一例。

3. android ini文件是什麼文件

ini文件一般是配置文件,或者初始化配置文件,任何程序都可以生成配置文件

4. android 讀取 ini文件 執行拷貝刪除動作

附件是創建/讀/寫ini文件的例子。

如果想用現成的類庫,可以參考ini4j類庫。

java" wealth="4" />

5. 安卓上怎麼讀取ini

android編程iniini文件讀寫的方法為:
一.將信息寫入.INI文件中
1.所用的WINAPI函數原型為:
BOOL WritePrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpString,
LPCTSTR lpFileName
);
其中各參數的意義:
LPCTSTR lpAppName 是INI文件中的一個欄位名.
LPCTSTR lpKeyName 是lpAppName下的一個鍵名,通俗講就是變數名.
PCTSTR lpString 是鍵值,也就是變數的值,不過必須為LPCTSTR型或CString型的.
LPCTSTR lpFileName 是完整的INI文件名.
2.具體使用方法:設現有一名學生,需把他的姓名和年齡寫入 c:/stud/student.ini 文件中.
CString strName,strTemp;
int nAge;
strName="張三";
nAge=12;
::WritePrivateProfileString("StudentInfo","Name",strName,"c://stud//student.ini");
此時c:/stud/student.ini文件中的內容如下:
[StudentInfo]
Name=張三
.要將學生的年齡保存下來,只需將整型的值變為字元型即可:
strTemp.Format("%d",nAge);
::WritePrivateProfileString("StudentInfo","Age",strTemp,"c://stud//student.ini");
二.將信息從INI文件中讀入程序中的變數.
1.所用的WINAPI函數原型為:
DWORD GetPrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);
其中各參數的意義:
前二個參數與 WritePrivateProfileString中的意義一樣.
lpDefault : 如果INI文件中沒有前兩個參數指定的欄位名或鍵名,則將此值賦給變數.
lpReturnedString : 接收INI文件中的值的CString對象,即目的緩存器.
nSize : 目的緩存器的大小.
lpFileName : 是完整的INI文件名.
2.具體使用方法:現要將上一步中寫入的學生的信息讀入程序中.
CString strStudName;
int nStudAge;
GetPrivateProfileString("StudentInfo","Name","默認姓名",strStudName.GetBuffer(MAX_PATH),MAX_PATH,"c://stud//student.ini");
執行後 strStudName 的值為:"張三",若前兩個參數有誤,其值為:"默認姓名".
3.讀入整型值要用另一個WINAPI函數:

UINT GetPrivateProfileInt(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
INT nDefault,
LPCTSTR lpFileName
);
這里的參數意義與上相同.使用方法如下:
nStudAge=GetPrivateProfileInt("StudentInfo","Age",10,"c://stud//student.ini");
三.循環寫入多個值,設現有一程序,要將最近使用的幾個文件名保存下來,具體程序如下:

1.寫入:
CString strTemp,strTempA;
int i;
int nCount=6;
file://共有6個文件名需要保存
for(i=0;i {strTemp.Format("%d",i);
strTempA=文件名;
file://文件名可以從數組,列表框等處取得.
::WritePrivateProfileString("UseFileName","FileName"+strTemp,strTempA,"c://usefile//usefile.ini");
}
strTemp.Format("%d",nCount);
::WritePrivateProfileString("FileCount","Count",strTemp,"c://usefile//usefile.ini");
2.讀出:
nCount=::GetPrivateProfileInt("FileCount","Count",0,"c://usefile//usefile.ini");
for(i=0;i {strTemp.Format("%d",i);
strTemp="FileName"+strTemp;
::GetPrivateProfileString("CurrentIni",strTemp,"default.fil", strTempA.GetBuffer(MAX_PATH),MAX_PATH,"c://usefile//usefile.ini");
file://使用strTempA中的內容.
}
補充四點:
1.INI文件的路徑必須完整,文件名前面的各級目錄必須存在,否則寫入不成功,該函數返回 FALSE 值.

2.文件名的路徑中必須為 // ,因為在VC++中, // 才表示一個 / .

3.也可將INI文件放在程序所在目錄,此時 lpFileName 參數為: ".//student.ini".

4.從網頁中粘貼源代碼時,最好先粘貼至記事本中,再往VC中粘貼,否則易造成編譯錯誤,開始時我也十分不解,好好的代碼怎麼就不對呢?後來才找到這個方法.還有一些代碼中使用了全形字元如:<,\等,也會

造成編譯錯誤.

6. 怎麼讀寫INI文件

INI文件的結構
INI文件是一種按照特點方式排列的文本文件。每一個INI文件構成都非常類似,由若干段落(section)組成,在每個帶括弧的標題下面,是若干個以單個單詞開頭的關鍵詞(keyword)和一個等號,等號右邊的就是關鍵字對應的值(value)。其一般形式如下:

[Section1]
KeyWord1 = Valuel
KeyWord2 = Value2
……
[Section2]
KeyWord3 = Value3
KeyWord4 = Value4

C#和Win32 API函數

C#並不像C++,擁有屬於自己的類庫。C#使用的類庫是.Net框架為所有.Net程序開發提供的一個共有的類庫——.Net FrameWork SDK。雖然.Net FrameWork SDK內容十分龐大,功能也非常強大,但還不能面面俱到,至少它並沒有提供直接操作INI文件所需要的相關的類。在本文中,C#操作INI文件使用的是Windows系統自帶Win32的API函數——WritePrivateProfileString()和GetPrivateProfileString()函數。這二個函數都位於「kernel32.dll」文件中。

我們知道在C#中使用的類庫都是託管代碼(Managed Code)文件,而Win32的API函數所處的文件,都是非託管代碼(Unmanaged Code)文件。這就導致了在C#中不可能直接使用這些非託管代碼文件中的函數。好在.Net框架為了保持對下的兼容,也為了充分利用以前的資源,提出了互操作,通過互操作可以實現對Win32的API函數的調用。互操作不僅適用於Win32的API函數,還可以用來訪問託管的COM對象。C#中對Win32的API函數的互操作是通過命名空間「System.Runtime.InteropServices」中的「DllImport」特徵類來實現的。它的主要作用是指示此屬性化方法是作為非託管DLL的輸出實現的。下面代碼就是在C#利用命名空間「System.Runtime.InteropServices」中的「DllImport」特徵類申明上面二個Win32的API函數:

C#申明INI文件的寫操作函數WritePrivateProfileString():

[ DllImport ( "kernel32" ) ]
private static extern long WritePrivateProfileString ( string
section ,
string key , string val , string filePath ) ;

參數說明:section:INI文件中的段落;key:INI文件中的關鍵字;val:INI文件中關鍵字的數值;filePath:INI文件的完整的路徑和名稱。

C#申明INI文件的讀操作函數GetPrivateProfileString():

[ DllImport ( "kernel32" ) ]
private static extern int GetPrivateProfileString ( string section ,
string key , string def , StringBuilder retVal ,
int size , string filePath ) ;

參數說明:section:INI文件中的段落名稱;key:INI文件中的關鍵字;def:無法讀取時候時候的預設數值;retVal:讀取數值;size:數值的大小;filePath:INI文件的完整路徑和名稱。

下面是一個讀寫INI文件的類

public class INIClass
{
public string inipath;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);
/// <summary>
/// 構造方法
/// </summary>
/// <param name="INIPath">文件路徑</param>
public INIClass(string INIPath)
{
inipath = INIPath;
}
/// <summary>
/// 寫入INI文件
/// </summary>
/// <param name="Section">項目名稱(如 [TypeName] )</param>
/// <param name="Key">鍵</param>
/// <param name="Value">值</param>
public void IniWriteValue(string Section,string Key,string Value)
{
WritePrivateProfileString(Section,Key,Value,this.inipath);
}
/// <summary>
/// 讀出INI文件
/// </summary>
/// <param name="Section">項目名稱(如 [TypeName] )</param>
/// <param name="Key">鍵</param>
public string IniReadValue(string Section,string Key)
{
StringBuilder temp = new StringBuilder(500);
int i = GetPrivateProfileString(Section,Key,"",temp,500,this.inipath);
return temp.ToString();
}
/// <summary>
/// 驗證文件是否存在
/// </summary>
/// <returns>布爾值</returns>
public bool ExistINIFile()
{
return File.Exists(inipath);
}
}

7. INI的文件讀寫

讀取 (_In_LPCTSTRlpAppName,_In_LPCTSTRlpKeyName,_In_LPCTSTRlpDefault,_Out_LPTSTRlpReturnedString,_In_DWORDnSize,_In_LPCTSTRlpFileName);參數說明:
lpAppName (輸入參數)節名
lpKeyName (輸入參數)鍵名
lpDefault (輸入參數)默認值。INI讀取失敗時,得到這個值
lpReturnedString (輸出參數)讀取到的鍵值
nSize (輸入參數)lpReturnedString的緩沖區大小
lpFileName (輸入參數)INI文件的文件路徑
返回值:
讀取到的字元數,不包括末尾的''字元或L''字元。
寫入 (_In_LPCTSTRlpAppName,_In_LPCTSTRlpKeyName,_In_LPCTSTRlpString,_In_LPCTSTRlpFileName);參數說明:
lpAppName (輸入參數)節名
lpKeyName (輸入參數)鍵名
lpString (輸入參數)需要寫入的鍵值
lpFileName (輸入參數)INI文件的文件路徑
返回值:
寫入成功返回非零值,寫入失敗返回零值,可以用GetLastError函數得到錯誤原因。 #!/usr/bin/envpython#-*-coding:UTF-8-*-importConfigParseriniparser=ConfigParser.ConfigParser()#初始化一個INI讀寫類的對象iniparser.read('filename.ini')#讀取INI文件key_value=iniparser.get('section_name_1','key_name')#解析INI文件printkey_value#生成INI文件iniparser.add_section('section_name_2')iniparser.set('section_name_2','key_name','key_value')withopen('filename.ini','w')asinifile: iniparser.write(inifile)#寫入INI文件

8. android 解析xml(ini)文件

解析XML一般使用 JDOM或者SAX等, 具體方法可以在網上參考下代碼.

閱讀全文

與android讀寫ini文件相關的資料

熱點內容
24v電動駐車空調壓縮機 瀏覽:840
老程序員編程步驟 瀏覽:303
物理去除加密軟體 瀏覽:225
匯編語言可調試編譯器 瀏覽:447
jpeg如何轉成pdf 瀏覽:841
微機室為什麼有伺服器 瀏覽:657
安卓手機怎麼打語音電話不斷網 瀏覽:458
單片機匯編頭文件 瀏覽:946
juniper命令行 瀏覽:68
程序員咨詢銷售工作怎麼樣 瀏覽:782
蘋果文件伺服器是什麼 瀏覽:180
企業透明加密軟體有監視功能嗎 瀏覽:494
桌面的運行命令 瀏覽:10
主流廠商伺服器維護流程是什麼 瀏覽:807
壓縮棉的被子先洗洗在用 瀏覽:242
批處理bat代碼和文件夾 瀏覽:298
怎麼交叉編譯tslib14 瀏覽:494
致程序員生產力飆升 瀏覽:762
程序員害怕下班嗎 瀏覽:108
鐵路漢宜線加密網實景效果圖 瀏覽:929