安卓数据库编程总结(1)

来源:互联网 发布:sql注入病毒的原理 编辑:程序博客网 时间:2024/04/29 04:19

最近学习了安卓数据库编程,一直没时间好好总结一下,因此今天抽空总结一下,算是给自己的知识升华一下。

首先,安卓数据存储分为五大类:
**1. Shared Preferences
- 外部存储(SD卡)
- 内部存储(手机内存)
- 网络存储
- SQLite Databases**

本篇博客先介绍手机内部和外部存储: 内部存储和外部也可以理解为File存储,谷歌为我们提供了两钟文件夹来存放File信息:
  
- files文件夹:存放重要文件,只有应用被卸载或者删除数据才会丢失
- cache文件夹:存放临时文件信息,应用删除缓存就删除文件数据
 这两种文件夹都位于数据文件夹下    

getFilesDir()//返回使用openFileOutput创建的文件的绝对路径File file=getFilesDir();file.getPath();//返回/data/data/com.example.filestorage/filesFile file=getCacheDir()file.getPath();//返回data/data/com.example.filestorage/cache

## 内部存储 ##
在安卓中,Context给我们提供了两个方法来打开本应用程序文件夹下的文件的IO流。
File存储的文件位于应用文件夹/data/data/files

1 public abstract FileInputStream openFileInput(String name)//取得文件输入流name:需要打开的文件,不能含有分隔符2 public abstract FileOutputStream openFileOutput(String name, int mode)//取得文件输出流name:需要打开的文件,不能含有分隔符mode:打开文件的模式,安卓里面有四中文件创建模式:       MODE_APPEND//追加模式,可以向文件追加内容       MODE_PRIVATE//默认模式,私有模式,该文件只能被当前应用读写,并且输入新内容后就得内容会被删除       MODE_WORLD_READABLE//只读模式,该应用程序可以被其他应用程序读取       MODE_WORLD_WRITEABLE//可写模式,该应用程序可以被其他应用程序读写   **注意:只有MODE_APPEND模式才可以追加内容,其它模式在写入新内容时,就得内容就被删除。**   

**MODE_WORLD_READABLE和 MODE_WORLD_WRITEABLE已经被不建议使用,如果需要和其他的应用程序分享数据,建议使用Contenprovider或者Broadcastreceiver。

外部存储

进行外部存储读取数据的步骤:

1 配置权限 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>2 判断SD卡状态,即是否插入SD卡 Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)    如果返回true,则SD卡可用,false不可用3 取得SD卡目录    Environment.getExternalStorageDirectory()4 使用输出输入流读取SD卡文件数据**内部存储示例代码*```public class MainActivity extends ActionBarActivity {    private EditText et_write,et_query;    private static final String FILE_NAME="file1.txt";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    private void initView(){        et_write=(EditText)findViewById(R.id.et_write);        et_query=(EditText)findViewById(R.id.et_query);    }public void click1(View view) throws Exception{  FileOutputStream fos=openFileOutput(FILE_NAME, MODE_APPEND);  String datas=et_write.getText().toString().trim();  fos.write(datas.getBytes());  Toast.makeText(MainActivity.this, "添加成功", 0).show();  fos.close();}  public void click2(View view) throws Exception{     FileInputStream fis= openFileInput(FILE_NAME);     byte[] buff=new byte[1024];    //由于会修改和删除文件信息,所以为了减少内存开销,不建议使用不可改变字符串的String     StringBuilder sb=new StringBuilder();     int len=0;     while((len=fis.read(buff))!=-1){         sb.append(new String(buff));     }     et_query.setText(sb.toString());     Toast.makeText(MainActivity.this, "读取成功", 0).show();  }片

`

0 0
原创粉丝点击