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;
}
}