Android 系统中提供了一种文件读写的方法, 可以将一些数据以文件的形式保存在设备中比如一些 word 文档, PDF 文档, 图片, 音频, 视频文件等
使用文件读写方法的步骤:
1. 调用 Context.openFileInput() 方法获得 Java 文件输入流 (FileInputStream)
2. 调用 Context.openFileOutput() 方法获得 java 文件输出流 (FileOutputStream)
3. 使用 Resources.openRawResource(R.raw.DataFile) 方法返回 InputStream
下面的具体实例, 在一个 Activity 里面创建两个 EditText 和两个 Button, 第一个 EditText 和 Button 将 EditText 的内容写到文件 file.txt 文件中第二个 EditText 和 Button 将内容从文件 file.txt 中读取出来显示文件被默认保存在 / data/data/package/files 下面
- MainActivity.java
- package com.android.file;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- public class MainActivity extends Activity {
- // 声明文件名字符串常量
- private static final String FILE_NAME="file.txt";
- private Button writeBtn,readBtn;
- private EditText writeText,readText;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- writeBtn = (Button)findViewById(R.id.Button1);
- readBtn = (Button)findViewById(R.id.Button2);
- writeText = (EditText)findViewById(R.id.EditText1);
- readText = (EditText)findViewById(R.id.EditText2);
- writeBtn.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // 写内容
- write(writeText.getText().toString());
- }
- });
- readBtn.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // 读内容
- readText.setText(read());
- }
- });
- }
- private String read(){
- try {
- // 实例化文件输入流对象
- FileInputStream fis = openFileInput(FILE_NAME);
- // 定义缓存数组
- byte[] buffer = new byte[fis.available()];
- // 读到缓冲区
- fis.read(buffer);
- return new String(buffer);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- private void write(String content){
- try {
- // 实例化文件输出流
- //openFileOutput(String name, int mode)
- // 第一个参数文件名
- // 第二个是模式
- //MODE_APPEND 表示要创建的文件存在则新写入的数据不会覆盖以前的数据
- FileOutputStream fos = openFileOutput(FILE_NAME, MODE_APPEND);
- // 写内容
- fos.write(content.getBytes());
- // 关闭文件流
- fos.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- main.java
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="请被文本输入内容"
- />
- <EditText
- android:text=""android:id="@+id/EditText1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:height="100px"
- />
- <Button
- android:id="@+id/Button1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="写数据"
- />
- <EditText
- android:text=""android:id="@+id/EditText2"android:layout_width="fill_parent"android:layout_height="wrap_content"android:height="100px"
- />
- <Button
- android:id="@+id/Button2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="读数据"
- />
- </LinearLayout>
效果图:
在终端下输入 adb shell 命令进入 Android 系统查看一下我们的文件是否写入成功
本文转自 lingdududu 51CTO 博客, 原文链接: http://blog.51cto.com/liangruijun/660540
来源: https://yq.aliyun.com/articles/420961