ym——Android从零开始(6)(Sdcard文件操作+pull解析+ SharedPreferences)(新)
2014-08-07 14:19
453 查看
转载请注明本文出自CYM的博客(http://blog.csdn.net/cym492224103),谢谢支持!
前言
在开发中很多信息,我们都会存储在手机内部,比如一个设置,等等。此章节就是讲解如何将信息存储到文件,还会给大家带来实战工具类之一 PreferencesUtils。
文件的操作(SD卡)
写一个文件在SD卡
1>
配置权限
2>
得到外存储器(SD卡)的路径
3>
创建一个输出流
4>
写入流
5>
关闭流
XmlPullParser解析
拉解析XML
1>
得到XmlPullParserFactory 解析器工厂
2>新的一个解析器XmlPullParser
3>
得到要解析的XML 文件流
注意:
4>
给解析器设置文件流和编码格式
5>
得到解析事件类型
6>
开始判断读取文件
>>
判断是否解析到结束标签
>>
开始标签
>>
读取标签里面的内容
>>
结束标签
生成一个XML文件
1>
得到拉解析工厂
2>
得到序列化器
3>
创建一个XML,并设置它的模式
4>
给序列化器指定文件输入流和编码
5>
生成文档头指定编码格式和是否是一个独立的文件
6>
生成(根)根节点
7>
迭代集合
8>
结束(根)根标签
9>
生成文档结尾
10>
关闭流
SharedPreferences(共享首选项)
SharedPreferences
可以方便的存储参数,首选项就是用户设置的操作信息,以xml的形式保存
比如,游戏中的设置,每次设置完后,就回对你的设置进行
保存选项信息
1>
得到首选项
2>
得到编辑器
3>
通过编辑器修改值
4> 提交提交信息
读取信息
1>
得到首选项
2>
根据首选项,得到数据
3>
绑定值
可存储数据类型:长 ,布尔,整型,浮点,字符串
在实战项目中会把SharedPreference写成一个公共类,方便多人共同使用,因为很实用:
前言
在开发中很多信息,我们都会存储在手机内部,比如一个设置,等等。此章节就是讲解如何将信息存储到文件,还会给大家带来实战工具类之一 PreferencesUtils。
文件的操作(SD卡)
写一个文件在SD卡
1>
配置权限
<!-- 老版本,考虑兼容性 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <!-- SD卡写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2>
得到外存储器(SD卡)的路径
File dir = Environment.getExternalStorageDirectory(); File file = new File(dir , name);
3>
创建一个输出流
FileOutputStream fos = new FileOutputStream(file);
4>
写入流
fos.write(content.getBytes());
5>
关闭流
fos.closed();
XmlPullParser解析
拉解析XML
1>
得到XmlPullParserFactory 解析器工厂
XmlPullParserFactory parserFactory = XmlPullParserFactory.newInstance();
2>新的一个解析器XmlPullParser
XmlPullParser parser = parserFactory.newXmlPullParser();
3>
得到要解析的XML 文件流
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(“XX.xml”);
注意:
this.getClass().getClassLoader().getResourceAsStream(“XX.xml”);获得src根目录下的文件 this.getClass().getResourceAsStream(“XX.xml”);获得当前操作对象的所在包下
4>
给解析器设置文件流和编码格式
parser.setInput(inputStream,”utf-8”);
5>
得到解析事件类型
INT EVENTTYPE = parser.getEventType();
6>
开始判断读取文件
>>
判断是否解析到结束标签
While(eventType != parser.END_DOCUMENT){ Swich(eventType){
>>
开始标签
Case:parser.STAR_TAG
>>
读取标签里面的内容
If(“persons”.equals(parser.getName)){ persons = new ArrayList<Person>(); }else if("person".equals(parser.getName())){ person = new Person(); int id = Integer.parseInt(parser.getAttributeValue(0)); person.id = id; }else if("age".equals(parser.getName())){ int age = Integer.parseInt(parser.nextText()); person.age = age; } Berak;
>>
结束标签
Case:parser.END_TAG If(“person”.equals(parser.getName)){ List.add(person); Person=null; } Break; Default: Break; } //执行下一个标签 eventType.next(); } inputStream.close();
生成一个XML文件
1>
得到拉解析工厂
XmlPullParserFactory parserFactory = XmlPullParserFactory.newInstance();
2>
得到序列化器
XmlSerializer serializer = parserFactory.newSerializer();
3>
创建一个XML,并设置它的模式
FileOutputStream os = new FileOutput(“XX.xml”,Context.MODE_PRIVATE);
4>
给序列化器指定文件输入流和编码
serializer.setInput(os,”utf-8”);
5>
生成文档头指定编码格式和是否是一个独立的文件
serializer.starDocument(“utf-8”,ture);
6>
生成(根)根节点
serializer.starTag(null,tagName);
7>
迭代集合
for(Lisr<XX> li : list){ serializer.starTag(null,tagName); Serializer.attribute(null,tagName,ls.value); serializer.endTag(null,tagName); }
8>
结束(根)根标签
Serializer.endTag(null,tagName);
9>
生成文档结尾
serializer.endDocument();
10>
关闭流
os.close();
SharedPreferences(共享首选项)
SharedPreferences
可以方便的存储参数,首选项就是用户设置的操作信息,以xml的形式保存
比如,游戏中的设置,每次设置完后,就回对你的设置进行
保存选项信息
1>
得到首选项
SharedPreference sp= getSharePreference(fileName,mode);
2>
得到编辑器
Editor editor = sp.edit();
3>
通过编辑器修改值
editor.setString(nameTag,value);
4> 提交提交信息
editor.commit();
读取信息
1>
得到首选项
SharedPreference sp = getSharedPreference(fileName,mode)
2>
根据首选项,得到数据
String name = sp.getString(nameTag,””);
3>
绑定值
可存储数据类型:长 ,布尔,整型,浮点,字符串
在实战项目中会把SharedPreference写成一个公共类,方便多人共同使用,因为很实用:
package com.chronocloud.lib.util; import android.content.Context; import android.content.SharedPreferences; /** * PreferencesUtils, easy to get or put data * <ul> * <strong>Preference Name</strong> * <li>you can change preference name by {@link #PREFERENCE_NAME}</li> * </ul> * <ul> * <strong>Put Value</strong> * <li>put string {@link #putString(Context, String, String)}</li> * <li>put int {@link #putInt(Context, String, int)}</li> * <li>put long {@link #putLong(Context, String, long)}</li> * <li>put float {@link #putFloat(Context, String, float)}</li> * <li>put boolean {@link #putBoolean(Context, String, boolean)}</li> * </ul> * <ul> * <strong>Get Value</strong> * <li>get string {@link #getString(Context, String)}, {@link #getString(Context, String, String)}</li> * <li>get int {@link #getInt(Context, String)}, {@link #getInt(Context, String, int)}</li> * <li>get long {@link #getLong(Context, String)}, {@link #getLong(Context, String, long)}</li> * <li>get float {@link #getFloat(Context, String)}, {@link #getFloat(Context, String, float)}</li> * <li>get boolean {@link #getBoolean(Context, String)}, {@link #getBoolean(Context, String, boolean)}</li> * </ul> * * @author <a href="http://www.trinea.cn" target="_blank">Trinea</a> 2013-3-6 */ public class PreferencesUtils { public static String PREFERENCE_NAME = "ChadAndroidCommon"; /** * put string preferences * * @param context * @param key The name of the preference to modify * @param value The new value for the preference * @return True if the new values were successfully written to persistent storage. */ public static boolean putString(Context context, String key, String value) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.putString(key, value); return editor.commit(); } /** * get string preferences * * @param context * @param key The name of the preference to retrieve * @return The preference value if it exists, or null. Throws ClassCastException if there is a preference with this * name that is not a string * @see #getString(Context, String, String) */ public static String getString(Context context, String key) { return getString(context, key, null); } /** * get string preferences * * @param context * @param key The name of the preference to retrieve * @param defaultValue Value to return if this preference does not exist * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with * this name that is not a string */ public static String getString(Context context, String key, String defaultValue) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); return settings.getString(key, defaultValue); } /** * put int preferences * * @param context * @param key The name of the preference to modify * @param value The new value for the preference * @return True if the new values were successfully written to persistent storage. */ public static boolean putInt(Context context, String key, int value) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.putInt(key, value); return editor.commit(); } /** * get int preferences * * @param context * @param key The name of the preference to retrieve * @return The preference value if it exists, or -1. Throws ClassCastException if there is a preference with this * name that is not a int * @see #getInt(Context, String, int) */ public static int getInt(Context context, String key) { return getInt(context, key, -1); } /** * get int preferences * * @param context * @param key The name of the preference to retrieve * @param defaultValue Value to return if this preference does not exist * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with * this name that is not a int */ public static int getInt(Context context, String key, int defaultValue) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); return settings.getInt(key, defaultValue); } /** * put long preferences * * @param context * @param key The name of the preference to modify * @param value The new value for the preference * @return True if the new values were successfully written to persistent storage. */ public static boolean putLong(Context context, String key, long value) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.putLong(key, value); return editor.commit(); } /** * get long preferences * * @param context * @param key The name of the preference to retrieve * @return The preference value if it exists, or -1. Throws ClassCastException if there is a preference with this * name that is not a long * @see #getLong(Context, String, long) */ public static long getLong(Context context, String key) { return getLong(context, key, -1); } /** * get long preferences * * @param context * @param key The name of the preference to retrieve * @param defaultValue Value to return if this preference does not exist * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with * this name that is not a long */ public static long getLong(Context context, String key, long defaultValue) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); return settings.getLong(key, defaultValue); } /** * put float preferences * * @param context * @param key The name of the preference to modify * @param value The new value for the preference * @return True if the new values were successfully written to persistent storage. */ public static boolean putFloat(Context context, String key, float value) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.putFloat(key, value); return editor.commit(); } /** * get float preferences * * @param context * @param key The name of the preference to retrieve * @return The preference value if it exists, or -1. Throws ClassCastException if there is a preference with this * name that is not a float * @see #getFloat(Context, String, float) */ public static float getFloat(Context context, String key) { return getFloat(context, key, -1); } /** * get float preferences * * @param context * @param key The name of the preference to retrieve * @param defaultValue Value to return if this preference does not exist * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with * this name that is not a float */ public static float getFloat(Context context, String key, float defaultValue) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); return settings.getFloat(key, defaultValue); } /** * put boolean preferences * * @param context * @param key The name of the preference to modify * @param value The new value for the preference * @return True if the new values were successfully written to persistent storage. */ public static boolean putBoolean(Context context, String key, boolean value) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean(key, value); return editor.commit(); } /** * get boolean preferences, default is false * * @param context * @param key The name of the preference to retrieve * @return The preference value if it exists, or false. Throws ClassCastException if there is a preference with this * name that is not a boolean * @see #getBoolean(Context, String, boolean) */ public static boolean getBoolean(Context context, String key) { return getBoolean(context, key, false); } /** * get boolean preferences * * @param context * @param key The name of the preference to retrieve * @param defaultValue Value to return if this preference does not exist * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with * this name that is not a boolean */ public static boolean getBoolean(Context context, String key, boolean defaultValue) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); return settings.getBoolean(key, defaultValue); } }
相关文章推荐
- Android之再谈文件操作和SDcard读写
- Android SDCard操作(文件读写,容量计算)
- Android开发——对sdcard扩展卡文件操作
- Android SDCard操作(文件读写,容量计算)
- android 数据库技术 | 文件系统,SDCARD访问,CONTENT PROVIDER,SQLITE ,CURSOR操作,CURSOR适配器,SQLITEHELPER,数据库设计模式
- Android下文件操作模式(含SDCard的读写)
- Android开发——对sdcard扩展卡文件操作
- android文件读写&访问sdcard&文件操作模式
- (转)android操作sdcard中的多媒体文件(二)——音乐列表的更新
- android操作sdcard中的多媒体文件——音乐列表的更新
- Android开发——对sdcard扩展卡文件操作
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- android操作sdcard中的多媒体文件(一)——音乐列表的制作
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- Android下文件操作模式(含SDCard的读写)
- Android SDCard操作(文件读写,容量计算)
- android操作sdcard中的多媒体文件(一)——音乐列表的制作
- 【Android】文件读写操作(含SDCard的读写)