【例5-1】 读取与写入文件示例
将数据以文件方式存储到设备的内部,其存储的文件被所创建的应用程序私有。该文件默认位于data/data/<packagename>/files/目录下,如果其他应用程序要操作该文件,需要获得权限。当应用程序被卸载时,其内部存储文件也随之被删除。

教学视频
打开values下的strings.xml,添加属性为“hello”的元素的内容:
<resources>
<string name="app_name">Chap05</string>
<string name="hello"> \n青春不是年华,而是心境;
\n青春不是桃面、丹唇、柔膝,而是深沉的意志、恢宏的想像、炽热的感情;
\n青春是生命的深泉涌流。
</string>
</resources>
布局文件activity_file.xml的源代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_share_preference"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="20dp"
android:weightSum="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_Save"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:onClick ="Click"
android:text="存入file"
android:textSize="24sp" />
<Button
android:id="@+id/btn_Get"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:onClick ="Click"
android:text="取出file"
android:textSize="24sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="20dp">
</LinearLayout>
<TextView
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.44"
android:textSize="24sp" />
</LinearLayout>
控制文件FileActivity.java源代码
package com.example.chap05;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileActivity extends AppCompatActivity {
Button btn_Save,btn_Get;
TextView txt;
static final String filename ="test2.txt";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_file);
btn_Save = (Button)findViewById(R.id.btn_Save);
btn_Get = (Button)findViewById(R.id.btn_Get);
txt = (TextView)findViewById(R.id.txt);
btn_Save.setOnClickListener(new mClick11());
btn_Get.setOnClickListener(new mClick12());
}
//存入file,写文件
class mClick11 implements View.OnClickListener {
@Override
public void onClick(View view) {
String str = getString(R.string.hello);
FileOutputStream f_out;
try{
f_out=openFileOutput(filename, Context.MODE_PRIVATE);
f_out.write(str.getBytes());
f_out.close();
txt.setText("写文件\n"+str);
}catch (IOException e){
e.printStackTrace();
txt.setText("写文件异常");}
}
}
//取出file,读文件
class mClick12 implements View.OnClickListener{
@Override
public void onClick(View view) {
FileInputStream f_in;
try{
f_in=openFileInput(filename);
byte[] buffer = new byte[f_in.available()]; //available()取得文件总字节数
f_in.read(buffer);
String str = new String(buffer);
txt.setText("读文件\n"+str);
}catch (IOException e){
e.printStackTrace();
txt.setText("读文件异常");
}
}
}
}
打开项目配置文件AndroidManifest.xml,修改工程要启动的Activity类名
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.chap05">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".FileActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

