Android APP 包下的读写文件
Android 中的文件读写和 Java 中的文件 I/O 相同,流程也很简单
范例
我们写一个 demo 尝试在当前包下创建文件 site.txt
并写入以下内容
简单教程,简单编程
-
创建一个 空的 Android 项目
cn.twle.android.WriteFile
-
修改
activity_main.xml
添加几个TextView
<?xml version="1.0" encoding="UTF-8" ?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="请输入文件名"/> <EditText android:id="@+id/ms_filename" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="文件名" android:text="site.txt"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="请输入文件内容" /> <EditText android:id="@+id/ms_filedata" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="简单教程,简单编程" android:hint="文件内容" /> <Button android:id="@+id/btn_save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="保存" /> <Button android:id="@+id/btn_clean" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="清空" /> <Button android:id="@+id/btn_read" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="读取文件" /> </LinearLayout>
-
在
MainActivity.java
同一目录下新建文件FileHelper.java
作为读写 SD 卡的帮助类package cn.twle.android.writefile; import android.content.Context; import java.io.IOException; import java.io.FileOutputStream; import java.io.FileInputStream; public class FileHelper { private Context mContext; public FileHelper() { } public FileHelper(Context mContext) { super(); this.mContext = mContext; } /* * 这里定义的是一个文件保存的方法,写入到文件中,所以是输出流 * */ public void save(String filename, String filecontent) throws Exception { //这里我们使用私有模式,创建出来的文件只能被本应用访问,还会覆盖原文件哦 FileOutputStream output = mContext.openFileOutput(filename, Context.MODE_PRIVATE); output.write(filecontent.getBytes()); //将String字符串以字节流的形式写入到输出流中 output.close(); //关闭输出流 } /* * 这里定义的是文件读取的方法 * */ public String read(String filename) throws IOException { //打开文件输入流 FileInputStream input = mContext.openFileInput(filename); byte[] temp = new byte[1024]; StringBuilder sb = new StringBuilder(""); int len = 0; //读取文件内容: while ((len = input.read(temp)) > 0) { sb.append(new String(temp, 0, len)); } //关闭输入流 input.close(); return sb.toString(); } }
-
最后修改 MainActivity.java ,我们在这里完成相关操作
package cn.twle.android.writefile; 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.Toast; import java.io.IOException; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private EditText ms_filename; private EditText ms_filedata; private Button btn_save; private Button btn_clean; private Button btn_read; private FileHelper helper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); helper = new FileHelper(getApplicationContext()); bindViews(); } private void bindViews() { ms_filename = (EditText) findViewById(R.id.ms_filename); ms_filedata = (EditText) findViewById(R.id.ms_filedata); btn_save = (Button) findViewById(R.id.btn_save); btn_clean = (Button) findViewById(R.id.btn_clean); btn_read = (Button) findViewById(R.id.btn_read); btn_save.setOnClickListener(this); btn_clean.setOnClickListener(this); btn_read.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_clean: ms_filename.setText(""); ms_filedata.setText(""); break; case R.id.btn_save: String filename = ms_filename.getText().toString(); String filedetail = ms_filedata.getText().toString(); try { helper.save(filename, filedetail); Toast.makeText(getApplicationContext(), "数据写入成功", Toast.LENGTH_SHORT).show(); } catch(Exception e){ e.printStackTrace(); Toast.makeText(getApplicationContext(), "数据写入失败", Toast.LENGTH_SHORT).show(); } break; case R.id.btn_read: String detail = ""; try { String filename2 = ms_filename.getText().toString(); detail = helper.read(filename2); } catch(IOException e){e.printStackTrace();} Toast.makeText(getApplicationContext(), detail, Toast.LENGTH_SHORT).show(); break; } } }
运行 APP ,演示效果如下
DDMS 查看手机上的文件
DDMS 全名 Dalvik Debug Monitor Service,是 Android 开发环境中的 Dalvik
虚拟机调试监控服务
-
在最新的
Android Studio 3
中,DDMS
已经是顶级窗口之一了,一般会收缩在编辑器的右下角 -
单击
Device File Explore
就会展开当前设备根目录下的所有文件和目录 -
依次展开
data/data/cn.twle.android.writefile/file
的目录就会看到我们刚刚创建的文件
site.txt
-
双击打开
site.txt
,如果是一般的文件,直接双击文件名就会打开
果然,读写文件成功