文件存储数据
文件存储的4种模式
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,
在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE
用来控制其他应用是否有权限读写该文件。
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入
- 下面不多说什么了,直接代码上吧。
FlieBase.java
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class FlieBase extends Activity implements OnClickListener {
//定义类的成员变量
private EditText ed_write = null;
private EditText ed_read = null;
Button bt_read,bt_write;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加载布局文件
setContentView(R.layout.activity_main);
//写入内容-----------------------
ed_write=(EditText) findViewById(R.id.ed_write);
bt_write=(Button) findViewById(R.id.bt_write);
bt_write.setOnClickListener(this);
//读取内容-----------------------
ed_read=(EditText) findViewById(R.id.ed_read);
bt_read=(Button) findViewById(R.id.bt_read);
bt_read.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_write:
try {
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录
File saveFile = new File(sdCardDir,"a.text");
FileOutputStream outStream = new FileOutputStream(saveFile);
outStream.write(ed_write.getText().toString().getBytes());
outStream.close();
Toast.makeText(FlieBase.this,"保存成功",Toast.LENGTH_LONG).show();
}
}catch (FileNotFoundException e) {
return;
}
catch (IOException e){
return ;
}
break;
case R.id.bt_read:
File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录
File saveFile = new File(sdCardDir,"a.text");
try {
FileInputStream inStream=new FileInputStream(saveFile);
ByteArrayOutputStream stream=new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int length=-1;
while((length=inStream.read(buffer))!=-1)
{
stream.write(buffer,0,length);
}
stream.close();
inStream.close();
ed_read.setText(stream.toString());
Toast.makeText(FlieBase.this,"读取成功",Toast.LENGTH_LONG).show();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e){
return ;
}
break;
default:
break;
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/ed_write"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textMultiLine" />
<Button
android:id="@+id/bt_write"
style="@style/AppTheme"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="内容写入"
android:textColor="#E30620" />
<EditText
android:id="@+id/ed_read"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textMultiLine" />
<Button
android:id="@+id/bt_read"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="内容读取"
android:textColor="#2806E5" />
</LinearLayout>
- 清单文件中加上这两条权限就OK了。
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
下面再贴上图就完全OK了。