数据存储
内部存储获取
getFilesDir()
外部存储获取
Environment.getExternalStorageDirectory()
SharedPreferences的使用
介绍
该方法会在app的目录下面创建一个share_pre文件夹,然后创建一个xml文件,可以用来存储一些零散的数据,比如用户名密码等。
存储数据方法
- SharedPreferences preferences = getSharedPreferences(“info”, MODE_PRIVATE);
- SharedPreferences.Editor eidtEditor = preferences.edit();
获取数据方式
- SharedPreferences preferences = getSharedPreferences(“info”, MODE_PRIVATE);
- preferences.getString(“name”, “”)
生成xml文件
xml文件结构
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<smss>
<sms>
<address>12300</address>
<body>cp0</body>
<data>1500696752329</data>
<type>1</type>
</sms>
<sms>
<address>12300</address>
<body>cp2</body>
<data>1510696752329</data>
<type>0</type>
</sms>
</smss>
方法一 StringBuffer拼接
FileOutputStream fos = new FileOutputStream(file);
buffer.append("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>");
buffer.append("<Message>");
for (Message sms : smss
) {
buffer.append("<Sms>");
buffer.append("<Address>");
buffer.append(sms.getAddress());
buffer.append("</Address>");
buffer.append("<Body>");
buffer.append(sms.getBody());
buffer.append("</Body>");
buffer.append("<Data>");
buffer.append(sms.getData());
buffer.append("</Data>");
buffer.append("<Type>");
buffer.append(sms.getType());
buffer.append("</Type>");
buffer.append("</Sms>");
}
buffer.append("</Message>");
fos.write(buffer.toString().getBytes());
fos.close();
方法二 XmlSerializer xmlSerializer = Xml.newSerializer();
try {
FileOutputStream fos = new FileOutputStream(file);
XmlSerializer xmlSerializer = Xml.newSerializer();
xmlSerializer.setOutput(fos, "utf-8");
xmlSerializer.startDocument("utf-8", true);
xmlSerializer.startTag(null, "smss");
for (Message sms : smss
) {
xmlSerializer.startTag(null, "sms");
xmlSerializer.startTag(null, "address");
xmlSerializer.text(sms.getAddress());
xmlSerializer.endTag(null, "address");
xmlSerializer.startTag(null, "body");
xmlSerializer.text(sms.getBody());
xmlSerializer.endTag(null, "body");
xmlSerializer.startTag(null, "data");
xmlSerializer.text(sms.getData());
xmlSerializer.endTag(null, "data");
xmlSerializer.startTag(null, "type");
xmlSerializer.text(sms.getType() + "");
xmlSerializer.endTag(null, "type");
xmlSerializer.endTag(null, "sms");
}
xmlSerializer.endTag(null, "smss");
xmlSerializer.endDocument();
XML解析XmlPullParser xmlPullParser = Xml.newPullParser();
try {
InputStream in = getResources().getAssets().open("sms.xml");
Log.d(TAG, "getMessage: InputStream ===============-->" + in);
XmlPullParser xmlPullParser = Xml.newPullParser();
Message sms = null;
xmlPullParser.setInput(in, "utf-8");
int eventType = xmlPullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_TAG:
if (xmlPullParser.getName().equals("smss")) {
getSmss = new ArrayList<>();
} else if (xmlPullParser.getName().equals("sms")) {
sms = new Message();
} else if (xmlPullParser.getName().equals("address")) {
sms.setAddress(xmlPullParser.nextText());
} else if (xmlPullParser.getName().equals("body")) {
sms.setBody(xmlPullParser.nextText());
} else if (xmlPullParser.getName().equals("data")) {
sms.setData(xmlPullParser.nextText());
} else if (xmlPullParser.getName().equals("type")) {
sms.setType(Integer.parseInt(xmlPullParser.nextText()));
}
break;
case XmlPullParser.END_TAG:
getSmss.add(sms);
break;
}
eventType = xmlPullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}