Android-openFileInput openFileOutput

Android设计了一套可以操作自身APP目录文件对API openFileInput openFileOutput,读取只需传入文件名,写入需要传入文件名 与 权限模式

界面:

布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/et_output"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请写入数据到文件"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="显示读取处理到信息:"
            />

        <TextView
            android:id="@+id/tv_input"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textColor="@android:color/black"

            android:singleLine="true"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit="marquee_forever"
            />


    </LinearLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp">

        <Button
            android:id="@+id/bt_output"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="写入"
            />

        <Button
            android:id="@+id/bt_input"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="读取"
            android:layout_alignParentRight="true"
            />

    </RelativeLayout>

</LinearLayout>

openFileInput  openFileOutpu  读写操作代码:

package liudeli.datastorage;

import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class MainActivity3 extends Activity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);

        initViewListener();

        getFilesDir(); // 得到当前APP应用files目录
        getCacheDir();// 得到当前APP应用cache缓存目录
    }

    private EditText etOutpu;
    private TextView tvInput;
    public Button btOutput, btInput;

    private void initViewListener() {
        etOutpu = findViewById(R.id.et_output);
        tvInput = findViewById(R.id.tv_input);

        btOutput = findViewById(R.id.bt_output);
        btInput = findViewById(R.id.bt_input);

        btOutput.setOnClickListener(this);
        btInput.setOnClickListener(this);

        // 让TextView获得焦点,TextView就可以滚动了
        tvInput.setSelected(true);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bt_input: {
                // Android提供了操作自身APP文件目录的API openFileInput
                try {
                    File file = new File(getFilesDir().getAbsolutePath() ,"my_open_file_file.txt");
                    if (!file.exists()) {
                        Toast.makeText(MainActivity3.this, "文件不存在", Toast.LENGTH_LONG).show();
                        return;
                    }

                    FileInputStream fileInputStream = openFileInput("my_open_file_file.txt");
                    byte[] bytes = new byte[1024];
                    int len;

                    while (-1 != (len = fileInputStream.read(bytes))) {
                        StringBuffer sb = new StringBuffer();
                        sb.append(new String(bytes, 0 ,len));
                        tvInput.setText("" + sb.toString());
                    }
                    fileInputStream.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                break;
            }
            case R.id.bt_output: {
                String outputStr = etOutpu.getText().toString();
                if (TextUtils.isEmpty(outputStr)) {
                    Toast.makeText(MainActivity3.this, "请输入内容!", Toast.LENGTH_SHORT).show();
                    return;
                }

                // Android提供了操作自身APP文件目录的API openFileOutput
                try {

                    // MODE_APPEND 私有模式,每次会进行覆盖,是比较安全的模式
                    // MODE_WORLD_READABLE 全局可读模式
                    // MODE_WORLD_WRITEABLE 全局可写模式
                    // MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE 全局可读可写模式

                    FileOutputStream fos = openFileOutput("my_open_file_file.txt", MODE_PRIVATE);
                    fos.write(outputStr.getBytes());
                    fos.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                break;
            }
            default:
                break;
        }
    }
}

操作的文件目录:使用 openFileInput openFileOutput 对文件进行操作,系统会自动在当前APP目录创建files文件夹/文件

原文地址:https://www.cnblogs.com/android-deli/p/10087573.html