android读写sd卡

在这里插入图片描述

TextWriteActivity

package cn.edu.zufe.app002;

import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.io.FileOutputStream;

import cn.edu.zufe.app002.bean.UserInfo;
import cn.edu.zufe.app002.util.DateUtil;

public class TextWriteActivity extends AppCompatActivity implements View.OnClickListener {

    private EditText etUsername;
    private EditText etAge;
    private EditText etHeight;
    private EditText etWeight;
    private Spinner spSex;
    private Button btnSave;

    private String mPath;

    private ArrayAdapter<CharSequence> sexAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_text_write);

        etUsername = (EditText) findViewById(R.id.et_username);
        etAge = (EditText) findViewById(R.id.et_age);
        etHeight = (EditText) findViewById(R.id.et_height);
        etWeight = (EditText) findViewById(R.id.et_weight);
        spSex = (Spinner) findViewById(R.id.sp_sex);
        btnSave = (Button) findViewById(R.id.btn_save);

        mPath = getExternalFilesDir(null).toString();

        sexAdapter = ArrayAdapter.createFromResource(this, R.array.sex, android.R.layout.simple_list_item_1);
        spSex.setAdapter(sexAdapter);
        btnSave.setOnClickListener(this);


    }

    @Override
    public void onClick(View v) {
        if(v.getId() == R.id.btn_save) {
            UserInfo info = new UserInfo();
            info.setName(etUsername.getText().toString());
            info.setAge(Integer.parseInt(etAge.getText().toString()));
            info.setHeight(Integer.parseInt(etHeight.getText().toString()));
            info.setWeight(Float.parseFloat(etWeight.getText().toString()));
            info.setSex(spSex.getSelectedItem().toString());
            info.setUpdateTime(DateUtil.getNowDateTime("yyyy-MM-dd HH:mm:ss"));
            String msg = String.format("id=%s\nname=%s\nage=%s\nheight=%s\nweight=%s\nsex=%s\nupdate_time=%s\nphone=%s\npassword=%s\n"
                    , info.getId(), info.getName(), info.getAge(), info.getHeight(), info.getWeight(), info.getSex(), info.getUpdateTime(), info.getPhone(), info.getPassword()
            );
            if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                String filePath = mPath + "/" + DateUtil.getNowDateTime("") + ".txt";
                try {
                    FileOutputStream stream = new FileOutputStream(filePath);
                    stream.write(msg.getBytes());
                    stream.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                Toast.makeText(this, "用户信息文件保存路径" + filePath, Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "没有挂载sd卡", Toast.LENGTH_SHORT).show();
            }
        }
    }
}

activity_text_write

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".TextWriteActivity">

    <TextView
        android:id="@+id/tv_username"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="20dp"
        android:layout_marginRight="10dp"
        android:text="姓名:"
        android:textSize="17sp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/et_username"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:textSize="17sp"
        app:layout_constraintBaseline_toBaselineOf="@+id/tv_username"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toRightOf="@+id/tv_username"
        app:layout_constraintRight_toRightOf="parent" />

    <TextView
        android:id="@+id/tv_age"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="20dp"
        android:layout_marginRight="10dp"
        android:text="年龄:"
        android:textSize="17sp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tv_username" />

    <EditText
        android:id="@+id/et_age"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:textSize="17sp"
        app:layout_constraintBaseline_toBaselineOf="@+id/tv_age"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toRightOf="@+id/tv_age"
        app:layout_constraintRight_toRightOf="parent" />

    <TextView
        android:id="@+id/tv_height"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="20dp"
        android:layout_marginRight="10dp"
        android:text="身高:"
        android:textSize="17sp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tv_age" />

    <EditText
        android:id="@+id/et_height"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:textSize="17sp"
        app:layout_constraintBaseline_toBaselineOf="@+id/tv_height"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toRightOf="@+id/tv_height"
        app:layout_constraintRight_toRightOf="parent" />

    <TextView
        android:id="@+id/tv_weight"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="20dp"
        android:layout_marginRight="10dp"
        android:text="体重:"
        android:textSize="17sp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tv_height" />

    <EditText
        android:id="@+id/et_weight"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:textSize="17sp"
        app:layout_constraintBaseline_toBaselineOf="@+id/tv_weight"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toRightOf="@+id/tv_weight"
        app:layout_constraintRight_toRightOf="parent" />

    <TextView
        android:id="@+id/tv_sex"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="20dp"
        android:layout_marginRight="10dp"
        android:text="性别:"
        android:textSize="17sp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tv_weight" />

    <Spinner
        android:id="@+id/sp_sex"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        app:layout_constraintLeft_toRightOf="@+id/tv_sex"
        app:layout_constraintTop_toBottomOf="@+id/et_weight" />

    <Button
        android:id="@+id/btn_save"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="保存到文本文件"
        android:textSize="17sp"
        android:layout_margin="20dp"
        app:layout_constraintTop_toBottomOf="@+id/tv_sex" />

</androidx.constraintlayout.widget.ConstraintLayout>

TextReadActivity

package cn.edu.zufe.app002;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import java.io.File;
import java.util.ArrayList;

import cn.edu.zufe.app002.util.FileUtil;

public class TextReadActivity extends AppCompatActivity {

    private TextView tvText;
    private Spinner spFiles;

    private ArrayAdapter<String> filesAdapter;

    private String mPath;
    private String[] fileNameList;

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

        tvText = (TextView) findViewById(R.id.tv_text);
        spFiles = (Spinner) findViewById(R.id.sp_files);

        mPath = getExternalFilesDir(null).toString();
        refreshSpinner();
    }
    private void refreshSpinner() {
        ArrayList<File> fileList = FileUtil.getFileList(mPath, new String[] {".txt"});
        if(fileList.size() > 0) {
            fileNameList = new String[fileList.size()];
            for(int i=0; i< fileList.size(); i++) {
                fileNameList[i] = fileList.get(i).getName();
            }
        } else {
            fileNameList = new String[] {};
        }
        filesAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, fileNameList);
        spFiles.setAdapter(filesAdapter);
        spFiles.setPrompt("请选择文本");
        spFiles.setSelection(0);
        spFiles.setOnItemSelectedListener(new FileSelectedListener());
    }

    private class FileSelectedListener implements AdapterView.OnItemSelectedListener {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            String filePath = mPath + "/" + fileNameList[position];
            String text = FileUtil.openText(filePath);
            tvText.setText(text);
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    }
}

activity_text_read

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".TextReadActivity">

    <TextView
        android:id="@+id/tv_files"
        android:layout_width="60dp"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="文件名:"
        android:textSize="17sp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Spinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/sp_files"
        android:layout_margin="10dp"
        app:layout_constraintLeft_toRightOf="@+id/tv_files"
        app:layout_constraintTop_toTopOf="@+id/tv_files"
        app:layout_constraintBottom_toBottomOf="@+id/tv_files" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv_text"
        android:text="文件名:"
        android:textSize="17sp"
        android:layout_margin="10dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/sp_files" />

</androidx.constraintlayout.widget.ConstraintLayout>

FileUtil类

package cn.edu.zufe.app002.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FilenameFilter;
import java.util.ArrayList;

public class FileUtil {

    public static String openText (String path) {
        String text = "";
        try {
            FileInputStream stream = new FileInputStream(path);
            byte[] buf = new byte[stream.available()];
            stream.read(buf);
            stream.close();
            text = new String(buf);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return text;
    }

    public static ArrayList<File> getFileList (String path, final String[] extendArray) {
        ArrayList<File> fileList = new ArrayList<>();
        File[] files;
        File directory = new File(path);
        if(extendArray != null && extendArray.length > 0) {
            FilenameFilter filter = new FilenameFilter() {
                @Override
                public boolean accept(File dir, String name) {
                    for(String extend : extendArray) {
                        if(name.endsWith(extend)) {
                            return true;
                        }
                    }
                    return false;
                }
            };
            files = directory.listFiles(filter);
        } else {
            files = directory.listFiles();
        }
        if(files != null) {
            for(File f : files) {
                if(!f.isDirectory() && !f.isHidden()) {
                    fileList.add(f);
                }
            }
        }
        return fileList;
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值