【十七】Android 数据存储-文件存储

来源:互联网 发布:视频播放器 知乎 编辑:程序博客网 时间:2024/04/30 00:21

文件存储数据


文件存储的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了。

0 0