android 存储方式(一) SD卡的存储
2014-12-11 23:01
253 查看
在实际的开发过程中,Android提供了五种方式存储数据:
1、文件的存储;2、使用sharedpreference进行存储数据;3、SQlite数据库进行存储;4、使用contentProvider进行存储;5、使用网络存储数据
JAVA提供了一套完整的IO流体系访问磁盘上的文件内容。Android支持这种访问方式来访问存储设备上的文件。
OpenFileOutput和OpenFIleInput的使用:Context提供了两个方法来打开应用程序等数据文件夹里的IO流。
FileInputStream OpenFileInput(String name),打开应用程序的数据文件夹name下对应的输入流;FileOutputStream OpenFileOutput(String name,int mode):打开应用程序的数据文件夹下的name文件对应的输出流。
其中mode的为打开的模式,该模式支持五种:
Context_PRIVATE = 0;//私有
Context_MODE_APPEND = 32768;//可追加方式
Context_MODE_WORLD_READABLE = 1;//可读
Context_MODE_WORLD_WRITEABLE = 2;//可写(这两个好像和名字是反过来的)
除此之外,Context还提供了如下方法来访问应用程序的数据文件夹:
getDir(String name,int mode)在应用程序的数据文件夹下获取或者创建name对应的子目录;
File getFileDir() 获取应用程序的数据文件夹的绝对路径;
String[] fileList()返回该应用程序的数据文件夹下的指定文件;
存储实例:
读写功能:
activity中读和写的方法如下:
当然这是对存储卡进行的操作,还要在manifest文件中添加相应的权限:
<!-- 添加读写SD卡的权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
1、文件的存储;2、使用sharedpreference进行存储数据;3、SQlite数据库进行存储;4、使用contentProvider进行存储;5、使用网络存储数据
JAVA提供了一套完整的IO流体系访问磁盘上的文件内容。Android支持这种访问方式来访问存储设备上的文件。
OpenFileOutput和OpenFIleInput的使用:Context提供了两个方法来打开应用程序等数据文件夹里的IO流。
FileInputStream OpenFileInput(String name),打开应用程序的数据文件夹name下对应的输入流;FileOutputStream OpenFileOutput(String name,int mode):打开应用程序的数据文件夹下的name文件对应的输出流。
其中mode的为打开的模式,该模式支持五种:
Context_PRIVATE = 0;//私有
Context_MODE_APPEND = 32768;//可追加方式
Context_MODE_WORLD_READABLE = 1;//可读
Context_MODE_WORLD_WRITEABLE = 2;//可写(这两个好像和名字是反过来的)
除此之外,Context还提供了如下方法来访问应用程序的数据文件夹:
getDir(String name,int mode)在应用程序的数据文件夹下获取或者创建name对应的子目录;
File getFileDir() 获取应用程序的数据文件夹的绝对路径;
String[] fileList()返回该应用程序的数据文件夹下的指定文件;
存储实例:
读写功能:
public class FileService { private Context mContext; public FileService() { } public FileService(Context context) { this.mContext = context; } /** * 对SD卡进行操作 * * @param fileName * 文件名 * @param content * 内容 * @return 存储是否成功的状态 */ public boolean saveContentFile(Context context, String fileName, String content) { boolean flag = false; FileOutputStream mFileOutputStream = null; File mFile = new File(Environment.getExternalStorageDirectory(), fileName); // Environment 表示Android中的环境中应用的操作,里面包含了许多常量 // 判断SD卡是否可用 if (Environment.MEDIA_MOUNTED.equals(Environment .getExternalStorageState())) { try { //这个没有指定存储模式,默认并不是追加方式进行存储的,而且FileOutputStream(写),FileInputStream(读)必须是对应的 //例如new FileOutputStream(mFile)和new FileInputStream(mFile)、context.openFileOutput(fileName,Context.MODE_APPEND) //和context.openFileInput(fileName); // mFileOutputStream = new FileOutputStream(mFile); mFileOutputStream = context.openFileOutput(fileName, Context.MODE_APPEND); mFileOutputStream.write(content.getBytes()); flag = true; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (mFileOutputStream != null) { try { mFileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } return false; } /** * 读取存储卡中文件的内容 * * @param fileName * 文件名 * @return 读取的内容 */ public String getFileNameContent(Context context, String fileName) { FileInputStream mFileInputStream = null; // 缓存流,和磁盘无关,这个流不需要关闭 ByteArrayOutputStream mArrayOutputStream = new ByteArrayOutputStream(); File mFile = new File(Environment.getExternalStorageDirectory(), fileName); if (Environment.MEDIA_MOUNTED.equals(Environment .getExternalStorageState())) { try { // mFileInputStream = new FileInputStream(mFile); mFileInputStream = context.openFileInput(fileName); int len = 0; byte[] data = new byte[1024]; while ((len = mFileInputStream.read(data)) != -1) { mArrayOutputStream.write(data, 0, len); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (mFileInputStream != null) { try { mFileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } return new String(mArrayOutputStream.toByteArray()); } }
activity中读和写的方法如下:
public void SaveFileContent(){ FileService mFileService = new FileService(this); boolean flag = mFileService.saveContentFile(this,"sdCard.txt",mEditText.getText()+""); Toast.makeText(MainActivity.this, ""+flag, Toast.LENGTH_SHORT).show(); } public void readFileContent(){ FileService mFileService = new FileService(this); String content = mFileService.getFileNameContent(this,"sdCard.txt"); if(content != null){ mTextView.setText(""+content); } }
当然这是对存储卡进行的操作,还要在manifest文件中添加相应的权限:
<!-- 添加读写SD卡的权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
相关文章推荐
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- Android——数据存储(四种方式之二)读写SD卡——练习
- (转)【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- Android——数据存储(四种方式之二)读写SD卡
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 我的 Android 之旅(十九)---数据存储--向SD卡中以实体类的方式存取数据
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- Android 八 数据存储方式之一 SQLite
- android数据存储方式
- Android中的文件存储数据方式
- Android中的SharedPreferences存储数据方式
- android存储方式(转)
- 获取Android手机中SD卡存储信息
- Android数据存储方式之SharedPreferences
- 详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- android 数据存储几个方式