zoukankan      html  css  js  c++  java
  • 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文件夹/文件

  • 相关阅读:
    Android Dalvik 虚拟机
    我在北京找工作(二):java实现算法<1> 冒泡排序+直接选择排序
    如何用java比较两个时间或日期的大小
    [安卓破解]听网页浏览器,无需注册即可语音朗读
    (step8.2.4)hdu 1846(Brave Game——巴什博奕)
    Oracle Database 12c Release 1 Installation On Oracle Linux 6.4 x86_64
    HDU2084:数塔(DP)
    MySQL MVCC(多版本并发控制)
    POJ
    网易前端微专业,JavaScript程序设计基础篇:数组
  • 原文地址:https://www.cnblogs.com/android-deli/p/10087573.html
Copyright © 2011-2022 走看看