Android中 File存储
2016-06-27 08:29
363 查看
Context 提供了两个方法来打开本地应用程序的数据文件夹里的文件I/O流.
FileInputStream openFileInput (String name): 打开应用程序中的数据文件夹下的name文件对应的输入流.
FileOutputStream openFileOutput (String name, int mode) : 打开应用程序中的数据文件夹下的name文件对应的输出流.
上面两个方法分别用于打开文件的输入流和输出流, 其中第二个方法的第二个参数指定打开文件的模式,该模式支持如下几种方式.:
MODE_APPEND:如果文件已经存在,那么将数据写入到现有文件的末尾,而不是覆盖它.
MODE_PRIVATE :该文件只能被当前程序读写.
MODE_WORLD_READABLE: 该文件的内容可以被其他程序读取.
MODE_WORLD_WRITEABLE: 该文件的内容可以被其他程序读, 写.
另外 ,Context还提供了如下几个方法来访问应用程序的数据文件夹:
getDir(String name, int mode) : 在应用程序的数据文件夹下,获取或创建name对应的子目录.
File getFilesDir(): 获取该应用程序的数据文件夹的绝对路径.
String[] fileList() :返回该应用程序的数据文件夹下的全部文件.
deleteFile(String name) :删除该应用程序的数据文件夹下的指定的文件.
FileInputStream openFileInput (String name): 打开应用程序中的数据文件夹下的name文件对应的输入流.
FileOutputStream openFileOutput (String name, int mode) : 打开应用程序中的数据文件夹下的name文件对应的输出流.
上面两个方法分别用于打开文件的输入流和输出流, 其中第二个方法的第二个参数指定打开文件的模式,该模式支持如下几种方式.:
MODE_APPEND:如果文件已经存在,那么将数据写入到现有文件的末尾,而不是覆盖它.
MODE_PRIVATE :该文件只能被当前程序读写.
MODE_WORLD_READABLE: 该文件的内容可以被其他程序读取.
MODE_WORLD_WRITEABLE: 该文件的内容可以被其他程序读, 写.
另外 ,Context还提供了如下几个方法来访问应用程序的数据文件夹:
getDir(String name, int mode) : 在应用程序的数据文件夹下,获取或创建name对应的子目录.
File getFilesDir(): 获取该应用程序的数据文件夹的绝对路径.
String[] fileList() :返回该应用程序的数据文件夹下的全部文件.
deleteFile(String name) :删除该应用程序的数据文件夹下的指定的文件.
package com.test.filetest; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintStream; /** * 示范如何读写应用程序数据文件夹内的文件 */ public class MainActivity extends AppCompatActivity { Button btnWrite, btnRead; EditText etWrite; TextView etRead; public static final String FILE_NAME = "a.txt"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnWrite = (Button) findViewById(R.id.btn_write); btnRead = (Button) findViewById(R.id.btn_read); etRead = (TextView) findViewById(R.id.et_read); etWrite = (EditText) findViewById(R.id.et_write); btnWrite.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //将edit1中的内容写入文件中 write(etWrite.getText().toString()); etWrite.setText(""); //将第一个输入框设置为空 } }); btnRead.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { etRead.setText(read2()); } }); } private String read2() { //打开文件输入流 try { FileInputStream fis = openFileInput(FILE_NAME); byte[] bytes = new byte[1024]; int hasRead = 0; StringBuilder sb = new StringBuilder(""); //读取文件内容 while ((hasRead = fis.read(bytes)) > 0) { sb.append(new String(bytes,0,hasRead)); } fis.close(); return sb.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } //写入内容的方法 private void write(String input) { //以追加的模式打开文件输出流 try { FileOutputStream fos = openFileOutput(FILE_NAME, MODE_APPEND); //将文件FileOutputStream包装成 PrintStream PrintStream ps = new PrintStream(fos); //输出文件内容 ps.println(input); ps.close(); //关闭文件输出流 } catch (FileNotFoundException e) { e.printStackTrace(); } } }
布局界面
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.test.filetest.MainActivity"> <Button android:id="@+id/btn_write" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="写入内容"/> <EditText android:id="@+id/et_write" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_toRightOf="@id/btn_write" android:hint="请输入内容"/> <Button android:id="@+id/btn_read" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/btn_write" android:text="读取内容"/> <TextView android:id="@+id/et_read" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ff9" android:layout_below="@id/et_write" android:layout_toEndOf="@id/btn_read" android:layout_toRightOf="@id/btn_write" android:hint="显示输入内容"/> </RelativeLayout>
相关文章推荐
- 从ImageLoader来理解设计原则
- android中的资源使用
- 安卓中的XML解析
- 跟我学Android之二 第一个程序
- 跟我学Android之二 第一个程序
- 跟我学Android之二 第一个程序
- Android Unlock Patterns
- Android之ActivityManager与Proxy模式的运用
- Android之category
- Android插件化开发基础之静态代理模式
- 漫谈android系统5
- Android实用adb命令
- Android Studio2.2 配置NDK
- Android简单加密保护自有图片资源
- Android System.gc()与Runtime.getRuntime().runFinalization()
- Android一键清除其他应用缓存数据,有没有什么好方法?
- 安卓学习之-ActivityManager
- 详解AndroidStudio中使用GsonFormat(附图)
- 在Android Studio中如何设置主题、字体大小
- 自定义日历