android数据存储之文件存储
来源:互联网 发布:编程计算圆的面积c 编辑:程序博客网 时间:2024/05/15 03:32
package com.android.saveData;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.content.Context;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 FileSaveDataActivity extends Activity implements OnClickListener { private EditText mEditText;private Button mSaveToFileButton;private Button mReadFromFileButton;private Button mSaveToSDButton;private Button mReadFromSDButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initView(); addListener(); } private void initView() { mEditText = (EditText)findViewById(R.id.mEditText_id); mSaveToFileButton = (Button)findViewById(R.id.saveToFile_id); mReadFromFileButton = (Button)findViewById(R.id.readFromFile_id); mSaveToSDButton = (Button)findViewById(R.id.saveToSD_id); mReadFromSDButton = (Button)findViewById(R.id.readFromSD_id); } private void addListener() { mSaveToFileButton.setOnClickListener(this); mReadFromFileButton.setOnClickListener(this); mSaveToSDButton.setOnClickListener(this); mReadFromSDButton.setOnClickListener(this); }@Overridepublic void onClick(View view) {String fileName = "fileSave.txt";switch(view.getId()) {case R.id.readFromFile_id:try {FileInputStream inStream = getApplicationContext().openFileInput(fileName);ByteArrayOutputStream mStream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int length = -1;while((length = inStream.read(buffer)) != -1) {mStream.write(buffer, 0, length);}Toast.makeText(getApplicationContext(), new String(buffer), Toast.LENGTH_LONG).show();mStream.close();inStream.close();} catch (FileNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}break;case R.id.readFromSD_id:if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {File sdCardDir = Environment.getExternalStorageDirectory();File readFile = new File(sdCardDir, fileName);try {FileInputStream inStream = new FileInputStream(readFile);ByteArrayOutputStream mStream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int length = -1;while((length = inStream.read(buffer)) != -1) {mStream.write(buffer, 0, length);}Toast.makeText(getApplicationContext(), new String(buffer), Toast.LENGTH_LONG).show();mStream.close();inStream.close();} catch (FileNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}break;case R.id.saveToFile_id:try {FileOutputStream outStream = getApplicationContext().openFileOutput(fileName, Context.MODE_WORLD_READABLE);outStream.write(mEditText.getText().toString().getBytes());outStream.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}break;case R.id.saveToSD_id:if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {File sdCardDir = Environment.getExternalStorageDirectory();File saveFile = new File(sdCardDir, fileName);try {FileOutputStream outStream = new FileOutputStream(saveFile);outStream.write(mEditText.getText().toString().getBytes());outStream.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}break;default:break;}}}
添加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
openFileOutput(fileName, Context.MODE_WORLD_READABLE)
方法,fileName不包含路径分隔符"/",如果文件不存在,android会自动创建,且保存在/data/data/<package name>/files目录,
Context.MODE_PRIVATE:该文件时私有数据,只能在应用本身访问,写入的内容会覆盖原文件,如想把新写入的内容追加到原文件,就用Context.MODE_APPEND
Context.MODE_APPEND:先检查文件是否存在,不存在就新建,存在就追加
下面两个是设置其他应用是否有权限读取这个数据:
Context.MODE_WORLD_WRITEABLE:读取数据
Context.MODE_WORLD_READABLE:写入数据
如果要其他应用要读和写权限的 可以:
openFileOutput(fileName, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE)Activity还提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于获取/data/data/<package name>/cache目录
getFilesDir()方法用于获取/data/data/<package name>/files目录
Environment.getExternalStorageState()方法用于获取SDCard的状态,如果手机装有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED。
Environment.getExternalStorageDirectory()方法用于获取SDCard的目录,当然要获取SDCard的目录,你也可以这样写:
File sdCardDir = new File("/sdcard"); //获取SDCard目录
File saveFile = new File(sdCardDir, "file.txt");
//上面两句代码可以合成一句: File saveFile = new File("/sdcard/file.txt");
- Android数据存储之文件存储数据
- Android数据存储之文件存储
- Android数据存储之文件存储
- Android数据存储之文件存储
- Android数据存储之文件存储
- Android数据存储之文件存储
- android数据存储之文件存储
- Android数据存储之文件存储
- Android数据存储之“文件存储“
- Android数据存储之文件存储
- Android数据存储之文件存储
- Android数据存储之文件存储
- Android数据存储之文件存储
- Android数据存储之文件存储
- Android数据存储之文件存储
- Android数据存储之文件存储
- Android数据存储之文件存储
- Android数据存储之文件存储
- 【转】DELPHI预编译
- Delphi 中的DLL 封装和调用对象技术
- Delphi XE2 之 FireMonkey 入门(7) - TText 与 TFont
- [MSSQL]汉字转全拼音函数优化方案(SQLServer),值得你看看
- 【Access】 LEFT OUTER JOIN 关联多表的查询语句
- android数据存储之文件存储
- 商人过河的另一个版本(商人数, 船载人数可变)
- Oracle、MYSQL、sql server和DB2分页查询写法
- Linux find命令小结
- C++变量命名规则
- ldd 的一个安全问题(http://blog.csdn.net/haoel/article/details/4795024)
- 编译Android 4.0 ICS,报错couldn't locate source file: framework/layoutlib-tests.jar
- PHP环境搭建
- 【产品设计】 HT实验室:功能设计面面俱到就强大吗?