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. Android studio怎麼文件添加到收藏和打開收藏夾
1首先需要打開Android studio編寫代碼的工具,並進行導入Android的項目之後,可以找到項目需要做收藏內容,已項目mainactivity文件為例,選中該文件。
2右鍵選中的activity的文件,彈出的下拉的菜單中進行選中「add to favorites」的選項。
3彈出到下一級的菜單中,my application為收藏過的內容,需要添加為收藏內容,選中add to new favorites list即可。
4彈出了一個為add new favorites list的選項框中,對添加的收藏夾的昵稱,可以根據需要命名昵稱,繼續點擊ok。
5文件收藏成功之後,就可以進行查看收藏夾中內容,點擊左下角位置中的favorites的按鈕。
6進入到收藏夾中,找到命名的昵稱文件夾,在該文件夾內可以剛才添加的文件。查看該文件內容信息,可以直接雙擊即可。
3. android數據存儲與訪問的方式都有哪些
數據存儲與訪問
很多時候我們的軟體需要對處理後的數據進行存儲或再次訪問。Android為數據存儲提供了多種方式,分別有如下幾種:
文件
SharedPreferences
SQLite資料庫
內容提供者(Content provider)
網路
使用文件進行數據存儲
首先給大家介紹使用文件如何對數據進行存儲,Activity提供了openFileOutput()方法可以用於把數據輸出到文件中,具體的實現過程與在J2SE環境中保存數據到文件中是一樣的。
復制代碼 代碼如下:
public class FileActivity extends Activity {
@Override public void onCreate(Bundle savedInstanceState) {
...
FileOutputStream outStream = this.openFileOutput("csdnt.txt", Context.MODE_PRIVATE);
outStream.write("CSDN".getBytes());
outStream.close();
}
}
openFileOutput()方法的第一參數用於指定文件名稱,不能包含路徑分隔符「/」 ,如果文件不存在,Android 會自動創建它。創建的文件保存在/data/data/<package name>/files目錄,如: /data/data/cn.csdn.action/files/csdn.txt ,通過點擊Eclipse菜單「Window」-「Show View」-「Other」,在對話窗口中展開android文件夾,選擇下面的File Explorer視圖,然後在File Explorer視圖中展開/data/data/<package name>/files目錄就可以看到該文件。
openFileOutput()方法的第二參數用於指定操作模式,有四種模式,分別為: Context.MODE_PRIVATE = 0
Context.MODE_APPEND = 32768
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2
Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容,如果想把新寫入的內容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有許可權讀寫該文件。
MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取;MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入。
如果希望文件被其他應用讀和寫,可以傳入:
openFileOutput("csdn.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
android有一套自己的安全模型,當應用程序(.apk)在安裝時系統就會分配給他一個userid,當該應用要去訪問其他資源比如文件的時候,就需要userid匹配。默認情況下,任何應用創建的文件,sharedpreferences,資料庫都應該是私有的(位於/data/data/<package name>/files),其他程序無法訪問。除非在創建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有這樣其他程序才能正確訪問。
讀取文件內容
如果要打開存放在/data/data/<package name>/files目錄應用私有的文件,可以使用Activity提供openFileInput()方法。
FileInputStream inStream = this.getContext().openFileInput("csdn.txt");
Log.i("FileTest", readInStream(inStream));
readInStream()的方法請看本頁下面備注。
或者直接使用文件的絕對路徑:
File file = new File("/data/data/cn.csdn.action/files/csdn.txt");
FileInputStream inStream = new FileInputStream(file);
Log.i("FileTest", readInStream(inStream));
注意:上面文件路徑中的「cn.csdn.action」為應用所在包,當你在編寫代碼時應替換為你自己應用使用的包。
對於私有文件只能被創建該文件的應用訪問,如果希望文件能被其他應用讀和寫,可以在創建文件時,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE許可權。
Activity還提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用於獲取/data/data/<package name>/cache目錄
getFilesDir()方法用於獲取/data/data/<package name>/files目錄
4. Android 文件系統中添加文件及添加系統屬性
android是linux系統,文件系統有很嚴格的許可權設置,如果你的apk沒有root許可權那麼你只能在有限的地方如sdcard目錄下讀寫文件
至於讀寫文件的方法,最簡答的在java上直接用FileInputStream類就可以
如果是ril層用c/c++的話,在ndk下直接用fopen fwrite就行了
所以核心問題是你的apk應用有沒有許可權來讀寫sys/data這個目錄,如果想得到root許可權,只能考慮使用一些本地許可權提升漏洞的exploit來獲得
5. android sharedpreferences存儲怎麼以追加方式寫入
存儲不同的欄位SharedPreferencespref1=getSharedPreferences("user1",0);pref1.put()SharedPreferencespref2=getSharedPreferences("user2",0);pref2.put()SharedPreferencespref3=getSharedPreferences("user3",0);pref3
6. android 怎麼通過代碼載入xml文件內容
關鍵方法:public int getIdentifier(String name, String defType, String defPackage)
關於具體使用方法,舉例如下:
1、updatelog.xml文件位於res/xml/文件夾下:
<?xml version="1.0" encoding="utf-8"?>
<updatelog>
<release
version="1.0"
versioncode="1.1">
<log>1、這個文件在res/xml文件夾下;</log>
<log>2、這個文件的名字是「updatelog.xml」</log>
<log>3、這是一個xml文件</log>
</release>
7. Android 怎樣在應用程序中向文件里寫入數據
Android 怎樣在應用程序中向文件里寫入數據?在AndroidManifest.xml中添加, <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />,解決!
另外了解一下android的數據存儲方式:文件流的讀取,SQLite,Content Provider以及Preference.。 註:resource和assets中的文件用戶方面是只可以讀取不能夠進行寫的操作的。
Content Provider作為程序之間唯一共享數據途徑,用在這里不是很合適。所以,
第一種方式,使用FileInputStream,FileOutputStreami類實現文件I/O操作,直接往手機中存儲數據。
第二種方式,使用SQLite,通過SQLiteDatabase類中方法操作數據。
第三種方式,Preference用於存儲簡單數據類型的數據,一些設置信息的保存。個人認為用在這里最合適。 它利用鍵值對存儲的。例:
存儲:SharedPreferences.Editor editor =sp.edit();
editor.putString(KEY_TEXT,"yonghu");
editor.commit();
獲取 :sp =getPreferences(MODE_PRIVATE);
String result =sp.getString(KEY_TEXT,null)
Android保存數據幾種常用方法解析
它應用於手機中能夠幫助我們實現許多需求。比如今天為大家介紹的Android保存數據,就是其中一個比較重要的操作技巧。Android組件相關概念總結Android傳值方法細講Android橫豎屏切換正確實現方式分享Android開發環境相關配置概覽Android NDK具體作用講解對於我們所熟悉的大部分軟體都有一個比較典型的特點,應用現有的數據根據不同的需求來得到相應的結果。例如,我們最常用的Officeword、Excel、PowerPoint等辦公軟體,它們都是幫助我們完成某種特定的需求,同時由其所產生的數據或者文檔又可以被其它軟體所讀取和做進一步的優化等等,在這個層面上可以看成是這些軟體通過相同的文件標准來共享數據。但是對於Android最大的不同點在於,其平台上的應用軟體所存儲的數據或者文件是私有,僅僅可以通過它自身才可以訪問其所包含的數據資源。那麼基於這樣的限制,該如何在Android平台上實現不同程序間的數據共享呢?答案非常簡單 – 應用ContentProviders,這是建立在Android平台上用於定義統一的數據標准。Android提供了針對不同數據類型的ContentProviders來滿足各種需要。例如:Image、Audio、Video和通訊錄信息類等。閱讀下邊的文檔之前,最好先熟悉Content Providers的概念。有了上邊所提到Content Providers,接下來就要處理在共享文件過程中的存儲環節了,這里有四種方法分別適用於不同情況的需求。它們都各自有相應的優缺點,所以當開發者決定選擇應用哪種方法之前,先要考慮當前所操作的情況是否適合於所選擇的方法。Preferences Files Databases Network 接下來將依次介紹上訴四個Android保存數據方法:Preferences從其保存數據的結構來分析,這是一個相對較輕量級的存儲數據的方法。類似於我們常用的ini文件保存軟體初始化設置,同樣在Android平台常用於存儲較簡單的參數設置。例如,可以通過它保存上一次用戶所作的修改或者自定義參數設定,當再次啟動程序後依然保持原有的設置。通過Context.getSharedPreferences()方法來讀寫數值,這個方法通過設置name來使得同一個程序內的其它模塊共享數據。如果不需要與其它模塊共享數據,可以使用Activity.getPreferences()方法保持數據私有。需要著重強調一點,無法直接在多個程序間共享Preferences數據(不包括使用Content Providers)。通過一個實例來了解實際使用方法:import android.app.Activity; import android.content.SharedPreferences; public class Calc extends Activity { public static final String PREFS_NAME = "MyPrefsFile"; . . . . Override protected void onCreate(Bundle state){ super.onCreate(state); . . . . // Restore preferences SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); boolean silent = settings.getBoolean("silentMode", false); setSilent(silent); } @Override protected void onStop(){ super.onStop(); // Save user preferences. We need an Editor object to // make changes. All objects are from android.context.Context SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("silentMode", mSilentMode); // Don't forget to commit your edits!!! editor.commit(); } } Files從這是第二種方法,可以在設備本身的存儲設備或者外接的存儲設備中創建用於保存數據的文件。同樣在默認的狀態下,文件是不能在不同的程序間共享。寫文件:調用Context.openFileOutput()方法根據指定的路徑和文件名來創建文件,這個方法會返回一個FileOutputStream對象。讀取文件:調用Context.openFileInput()方法通過制定的路徑和文件名來返回一個標準的Java FileInputStream對象。
(注意:在其它程序中將無法應用相同的路徑和文件名來操作文件)另外編譯程序之前,在res/raw/tempFile中建立一個static文件,這樣可以在程序中通過Resources.openRawResource (R.raw.myDataFile)方法同樣返回一個InputStream對象,直接讀取文件內容。Databases在Android API中包括了應用SQLite databases的介面,每個程序所創建的資料庫都是私有的,換句話說,程序間無法相互訪問對方的資料庫。在程序中創建SQLiteDatabase對象,其中包含了大部分與database交互的方法,例如:讀取數據或者管理當前數據。可以應用SQLiteDatabase和其subClassSQLiteOpenHelper的create()方法來創建新的資料庫。對於SQLitedatabase而言,其強大和方便的功能為Android提供了強有力的存儲功能。特別是存儲一些復雜的數據結構,例如:Android特別為通訊錄創建了特有的數據類型,其中包含了非常多的子集而且涵蓋了大部分的數據類型 「First Name」 「Last Name」 「PhoneNumber」和「Photo」等。Android可以通過Sqlite3 database tool來查看指定資料庫中表的內容,直接運行SQL命令來快速便捷的直接操作SQLite database。
8. Android中如何修改文件內容
題主的問題問的不好,不具體。請問修改什麼文件的內容,如果按照系統來劃分,是系統文件,還是非系統文件?系統文件就需要root才行,非系統文件又可以繼續分,如文本類,應用程序apk類等等。如果是文本直接編輯即可,apk的話就像樓上說的可以反編譯。
9. Android-Android怎麼向已有的xml文件添加數據
可以這么做:
在上傳之前,所有的數據可以用你熟悉的格式存儲即可,主要方便自己後面讀取,像純文本,jason 都可以
當數據到達你設定的上限,需要發送的時候,此時把數據讀出來用xml編碼,android本身就支持,XmlSerializer 用的多些。
10. android如何往system中添加文件
把手機root後,安裝RE管理器,獲取最高許可權,打開管理器,載入讀寫。