文件的读写,sd卡存储数据,SharedPerference存储
2016-08-10 20:49
417 查看
四.文件的存储于访问
(1)文件
文件的保存在手机自带存储空间:
public class
fileService {
private
Context
context;
public
fileService(Context context) {
this.context
= context;
}
public
void save(String
fileName,
String fileContect)throws
Exception {
//私有操作模式,创建出来的文件只能被被应用访问,写入文件中的内容会覆盖原文件。默认保存在包名下的file文件中
FileOutputStream
fos = context.openFileOutput(fileName,Context.MODE_PRIVATE);
fos.write(fileContect.getBytes());
fos.close();
}
}
button.setOnClickListener(new
View.OnClickListener() {
@Override
public
void onClick(View
view) {
EditText name = (EditText)findViewById(R.id.file_et);
EditText
contect = (EditText)findViewById(R.id.file_contect);
String
fileName = name.getText().toString();
String
fileContect = contect.getText().toString();
fileService
service = new
fileService(getApplication());
try
{
service.save(fileName,fileContect);
Toast.makeText(MainActivity.this,R.string.save_success,Toast.LENGTH_LONG).show();
}
catch
(Exception e) {
Toast.makeText(MainActivity.this,R.string.save_fail,Toast.LENGTH_LONG).show();
e.printStackTrace();
}
读取文件:
public
String
read(String
fileName) throws
Exception {
//私有操作模式,创建出来的文件只能被被应用访问,写入文件中的内容会覆盖原文件。默认保存在包名下的file文件中
FileInputStream
fis = context.openFileInput(fileName);
ByteArrayOutputStream
bas = new
ByteArrayOutputStream();
byte[]
buffer = new byte[1024];
int
len =
0;
while((len
= fis.read(buffer))!= -1){
bas.write(buffer,0,len);
}
fis.close();
byte[]
data = bas.toByteArray();
return new
String(data);
}
介绍四种操作模式:
MODE_PRIVATE: 私有操作模式,创建出来的文件只能被被应用访问,写入文件中的内容会覆盖原文件。默认保存在包名下的file文件中
MODE_APPEAD: 检查文件是否存在,如果存在,就追加,否则就创建新文件,而且也是只能被本文件访问。
MODE_WORLD_WRITEABLE:
表示当前文件可以被其他应用写入
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取
Activity还提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于获取
/data/data/<package name> cache目录
getFilesDir() 方法用于获取
/data/data/<package name>/files
目录
将 文件保存在SD卡上:
<!--在SD卡中创建与删除文件的权限-->
<uses-permission
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!--往SD卡中写入文件的权限-->
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
// 文件写入SD卡
public void
saveSDCard(String
fileName,String
contect) throws
Exception{
// 指定文件的写入位置
File
file = new
File(new
File("/mnt/sdcard"),fileName);
FileOutputStream
fos = new
FileOutputStream(file);
fos.write(contect.getBytes());
fos.close();
}
要注意再调用方法时判断sd卡的状态:
try
{
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
service.saveSDCard(fileName,contect);
//提示写入成功
}
}catch
(Exception e){
//提示写入失败
}
获取sd卡路径:
Environment.getExternalStorageDirectory()
(2)SharedPerference
存储数据:
public class
PreferencesService {
private
Context
context;
public
PreferencesService(Context context) {
this.context
= context;
}
//保存参数
public
void save(String
name,
Integer age) {
//用上下文对象的到spf
SharedPreferences
spf = context.getSharedPreferences("weimiao",Context.MODE_PRIVATE);
//得到编辑器,用编辑器
SharedPreferences.Editor
editor = spf.edit();
editor.putString("name",name);
editor.putInt("age",age);
//数据提交回文件中
editor.commit();
}
//将开始输入的数据下次打开时回显在屏幕上
public
Map<String,String>
getShareparences(){
Map<String,String>
map = new
HashMap<>();
SharedPreferences
sp =context.getSharedPreferences("weimiao",Context.MODE_PRIVATE);
map.put("name",sp.getString("name",""));
map.put("age",String.valueOf(sp.getInt("age",0)));
return
map;
}
}
测试:
public class
MainActivity
extends
Activity {
private
EditText
nameText;
private
EditText
ageText;
private
PreferencesService
service;
@Override
protected
void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
nameText
=(EditText)findViewById(R.id.et_name);
ageText
=(EditText)findViewById(R.id.et_age);
service
=
new
PreferencesService(this);
//用来回显数据
Map<String,String>
map = service.getShareparences();
nameText.setText(map.get("name"));
ageText.setText(map.get("age"));
}
public
void save(View
v){
String name =
nameText.getText().toString();
String
age = ageText.getText().toString();
service.save(name,Integer.valueOf(age));
Toast.makeText(MainActivity.this,"保存成功",Toast.LENGTH_SHORT).show();
}
(1)文件
文件的保存在手机自带存储空间:
public class
fileService {
private
Context
context;
public
fileService(Context context) {
this.context
= context;
}
public
void save(String
fileName,
String fileContect)throws
Exception {
//私有操作模式,创建出来的文件只能被被应用访问,写入文件中的内容会覆盖原文件。默认保存在包名下的file文件中
FileOutputStream
fos = context.openFileOutput(fileName,Context.MODE_PRIVATE);
fos.write(fileContect.getBytes());
fos.close();
}
}
button.setOnClickListener(new
View.OnClickListener() {
@Override
public
void onClick(View
view) {
EditText name = (EditText)findViewById(R.id.file_et);
EditText
contect = (EditText)findViewById(R.id.file_contect);
String
fileName = name.getText().toString();
String
fileContect = contect.getText().toString();
fileService
service = new
fileService(getApplication());
try
{
service.save(fileName,fileContect);
Toast.makeText(MainActivity.this,R.string.save_success,Toast.LENGTH_LONG).show();
}
catch
(Exception e) {
Toast.makeText(MainActivity.this,R.string.save_fail,Toast.LENGTH_LONG).show();
e.printStackTrace();
}
读取文件:
public
String
read(String
fileName) throws
Exception {
//私有操作模式,创建出来的文件只能被被应用访问,写入文件中的内容会覆盖原文件。默认保存在包名下的file文件中
FileInputStream
fis = context.openFileInput(fileName);
ByteArrayOutputStream
bas = new
ByteArrayOutputStream();
byte[]
buffer = new byte[1024];
int
len =
0;
while((len
= fis.read(buffer))!= -1){
bas.write(buffer,0,len);
}
fis.close();
byte[]
data = bas.toByteArray();
return new
String(data);
}
介绍四种操作模式:
MODE_PRIVATE: 私有操作模式,创建出来的文件只能被被应用访问,写入文件中的内容会覆盖原文件。默认保存在包名下的file文件中
MODE_APPEAD: 检查文件是否存在,如果存在,就追加,否则就创建新文件,而且也是只能被本文件访问。
MODE_WORLD_WRITEABLE:
表示当前文件可以被其他应用写入
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取
Activity还提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于获取
/data/data/<package name> cache目录
getFilesDir() 方法用于获取
/data/data/<package name>/files
目录
将 文件保存在SD卡上:
<!--在SD卡中创建与删除文件的权限-->
<uses-permission
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!--往SD卡中写入文件的权限-->
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
// 文件写入SD卡
public void
saveSDCard(String
fileName,String
contect) throws
Exception{
// 指定文件的写入位置
File
file = new
File(new
File("/mnt/sdcard"),fileName);
FileOutputStream
fos = new
FileOutputStream(file);
fos.write(contect.getBytes());
fos.close();
}
要注意再调用方法时判断sd卡的状态:
try
{
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
service.saveSDCard(fileName,contect);
//提示写入成功
}
}catch
(Exception e){
//提示写入失败
}
获取sd卡路径:
Environment.getExternalStorageDirectory()
(2)SharedPerference
存储数据:
public class
PreferencesService {
private
Context
context;
public
PreferencesService(Context context) {
this.context
= context;
}
//保存参数
public
void save(String
name,
Integer age) {
//用上下文对象的到spf
SharedPreferences
spf = context.getSharedPreferences("weimiao",Context.MODE_PRIVATE);
//得到编辑器,用编辑器
SharedPreferences.Editor
editor = spf.edit();
editor.putString("name",name);
editor.putInt("age",age);
//数据提交回文件中
editor.commit();
}
//将开始输入的数据下次打开时回显在屏幕上
public
Map<String,String>
getShareparences(){
Map<String,String>
map = new
HashMap<>();
SharedPreferences
sp =context.getSharedPreferences("weimiao",Context.MODE_PRIVATE);
map.put("name",sp.getString("name",""));
map.put("age",String.valueOf(sp.getInt("age",0)));
return
map;
}
}
测试:
public class
MainActivity
extends
Activity {
private
EditText
nameText;
private
EditText
ageText;
private
PreferencesService
service;
@Override
protected
void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
nameText
=(EditText)findViewById(R.id.et_name);
ageText
=(EditText)findViewById(R.id.et_age);
service
=
new
PreferencesService(this);
//用来回显数据
Map<String,String>
map = service.getShareparences();
nameText.setText(map.get("name"));
ageText.setText(map.get("age"));
}
public
void save(View
v){
String name =
nameText.getText().toString();
String
age = ageText.getText().toString();
service.save(name,Integer.valueOf(age));
Toast.makeText(MainActivity.this,"保存成功",Toast.LENGTH_SHORT).show();
}
相关文章推荐
- Android手机数据读写方法(内部存储、SD卡,网络加载,包内文件读取)
- 初学Android,数据存储之读写SD卡文件(四十三)
- 13—(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中
- Windows Phone开发之独立存储、文件的读写、ListBox绑定数据、NavigationService实现XAML跳转
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- Android数据存储方式(一)文件读写操作
- 数据存储-文件(文件的读取、把文件存储到SD卡中)
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 如何在python中读写和存储matlab的数据文件(*.mat)
- 【Android 开发】:数据存储之File文件存储 [即SD卡的写入与读取]
- android 数据存储<一>----android短信发送器之文件的读写(手机+SD卡)
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- Android下SD卡文件操作与数据读写
- ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- android 数据存储之 读写文件
- Android将数据持久化到文件中,读写SD卡
- Android游戏开发13:SQLite存储数据及保存SQLite数据库文件到SD卡
- iOS iPhone 开发中的文件读写及数据存储
- Android自学笔记-8-Android数据存储1:文件、SharedPreferences和获取sd卡信息