布局文件activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"android:orientation="vertical"tools:context=".MainActivity"><EditTextandroid:id="@+id/edt_msg"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="25sp"android:gravity="center"/><Buttonandroid:id="@+id/btn_native_r"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="读取本地文件"/><Buttonandroid:id="@+id/btn_native_w"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="写入本地文件"/></LinearLayout>

MainActivity.java

package com.example.ch07filedemo;import androidx.appcompat.app.AppCompatActivity;import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;public class MainActivity extends AppCompatActivity {private EditText edtMsg;private Button btnNativeR;private Button btnNativeW;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViews();//读取SharedPreferences中的数据,显示在编辑框中showUserInfo();//注册监听器setListener();}private void setListener() {Mylistener mylistener = new Mylistener();btnNativeR.setOnClickListener(mylistener);btnNativeW.setOnClickListener(mylistener);}private void showUserInfo() {//1. 获取SharedPreferences对象SharedPreferences userSp = getSharedPreferences("UserInfo",MODE_PRIVATE);//2. 获取数据String name = userSp.getString("name", "无名");String pwd = userSp.getString("pwd", "******");//3. 显示数据edtMsg.setText(name + " :" + pwd);}private void findViews() {edtMsg = findViewById(R.id.edt_msg);btnNativeR = findViewById(R.id.btn_native_r);btnNativeW = findViewById(R.id.btn_native_w);}class Mylistener implements View.OnClickListener {@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.btn_native_r://读取本地文本文件的内容,并显示在编辑框中showNativeTxtMsg();break;case R.id.btn_native_w://提取编辑框中的内容,追加到本地文件的末尾appenNateiveTxtMsg();break;}}}private void appenNateiveTxtMsg() {try {//1. 获取本地文件路径String path = getFilesDir().getAbsolutePath();String file = path + "/test.txt";//2. 创建输出流(高级输出缓冲字符流)BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true), "GB2312"));//3. 获取编辑框的内容String str = edtMsg.getText().toString().trim();//4. 将获取到的内容添加到文件的末尾writer.write(str);writer.flush();writer.close();Toast.makeText(getApplicationContext(),"数据追加完成",Toast.LENGTH_SHORT).show();} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/*** 读取本地文本文件的内容,并显示在编辑框中*/private void showNativeTxtMsg() {try {//1. 得到文件的路径String path = getFilesDir().getAbsolutePath();Log.i("lww", "本地路径:" + path);//构造文件路径String file = path + "/test.txt";//2. 创建文件输入流(高级缓冲输入流)BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "GB2312"));//3. 读String str = null;StringBuffer buffer = new StringBuffer();while (null != (str = reader.readLine())) {buffer.append(str);buffer.append("\n");}reader.close();Toast.makeText(getApplicationContext(),"文件读取完成",Toast.LENGTH_SHORT).show();//4. 将读到的数据显示在编辑框中edtMsg.setText(buffer.toString());} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}

布局文件 activity_login.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"android:orientation="vertical"android:layout_margin="15dp"android:gravity="center"tools:context=".LoginActivity"><EditTextandroid:id="@+id/edt_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入用户名" /><EditTextandroid:id="@+id/edt_pwd"android:layout_width="match_parent"android:layout_height="wrap_content"android:inputType="textPassword"android:hint="请输入密码"/><Buttonandroid:id="@+id/btn_login"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="15sp"android:text="登录"/><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="15dp"><TextViewandroid:id="@+id/tv_auto"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:text="自动登录"/><CheckBoxandroid:id="@+id/chk_auto"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toLeftOf="@id/tv_auto"android:layout_alignBaseline="@id/tv_auto"/><TextViewandroid:id="@+id/tv_save"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toLeftOf="@id/chk_auto"android:text="保存密码"/><CheckBoxandroid:id="@+id/chk_save"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toLeftOf="@id/tv_save"android:layout_alignBaseline="@id/tv_save"/></RelativeLayout></LinearLayout>

LoginActivity.java

package com.example.ch07filedemo;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;public class LoginActivity extends AppCompatActivity {private Button btnLogin;private EditText edtName;private EditText edtPwd;private TextView tvAuto;private TextView tvSave;private CheckBox chkAuto;private CheckBox chkSave;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);//获取控件findViews();//添加监听器setListener();}private void setListener() {Mylistener mylistener = new Mylistener();//给按钮注册点击事件监听器btnLogin.setOnClickListener(mylistener);//给自动登录复选框注册点击事件监听器chkAuto.setOnClickListener(mylistener);}private void findViews() {btnLogin = findViewById(R.id.btn_login);edtName = findViewById(R.id.edt_name);edtPwd = findViewById(R.id.edt_pwd);tvAuto = findViewById(R.id.tv_auto);tvSave = findViewById(R.id.tv_save);chkAuto = findViewById(R.id.chk_auto);chkSave = findViewById(R.id.chk_save);}class Mylistener implements View.OnClickListener{@Overridepublic void onClick(View view) {switch (view.getId()){case R.id.btn_login://1. 判断是否自动保存密码boolean flagSave = isChecked(R.id.chk_save);if(flagSave) {//如果自动保存,则保存账户信息//TODO:使用SharedPreferences保存账户信息saveUser();}else {//如果不自动保存,则清空账户信息//TODO:清除账户信息deleteUser();}//2. 页面跳转Intent intent = new Intent();intent.setClass(LoginActivity.this,MainActivity.class);startActivity(intent);break;case R.id.chk_auto://判断是否被选中boolean flagAuto = isChecked(R.id.chk_auto);if(flagAuto){Toast.makeText(getApplicationContext(),"您已选择自动登录",Toast.LENGTH_SHORT).show();}else{Toast.makeText(getApplicationContext(),"您已取消自动登录",Toast.LENGTH_SHORT).show();}break;}}}private void deleteUser() {//1 获取SharedPreferences对象SharedPreferences userSp = getSharedPreferences("UserInfo",0);//2. 获取Editor对象SharedPreferences.Editor editor = userSp.edit();//3. 删除指定数据//删除用户名editor.remove("name");//删除所有信息editor.clear();//4. 提交更改editor.commit();}private void saveUser() {//1 获取SharedPreferences对象SharedPreferences userSp = getSharedPreferences("UserInfo", MODE_PRIVATE);//2 获取Editor对象SharedPreferences.Editor editor = userSp.edit();//3 向SharedPreferences中添加数据String name = edtName.getText().toString().trim();String pwd = edtPwd.getText().toString().trim();editor.putString("name", name);editor.putString("pwd", pwd);//4 提交修改editor.commit();}private boolean isChecked(int id) {switch(id){case R.id.chk_auto:return chkAuto.isChecked();case R.id.chk_save:return chkSave.isChecked();}return false;}
}

【java与智能设备】CH07_01_Android中的文件存储相关推荐

  1. java对接天翼云OOS实现文件存储

    java对接天翼云OOS实现文件存储 1. 注册天翼云账户.开通对象存储.创建容器 2. 获取AccessKeyID.SecretAccessKey 确定四个参数,在application.yml中填 ...

  2. java获取jar包中的文件资源

    java获取jar包中的文件资源 一.问题示例 1.1 项目开发时 1.2 打包成jar后 二.解决方案 2.1 解决方法 2.2 实现 问题描述:   我们常常在代码中读取一些资源文件(比如图片,音 ...

  3. java从指定文件中删除字符串,java删除指定目录中的文件或文件夹

    java删除指定目录中的文件或文件夹 package tf; import java.io.File; public class DelFile { public static void main(S ...

  4. java中的文件存储_File存储 - 文件存储

    文件存储 文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式 化处理,所有数据都是原封不动地保存到文件当中的,因而它比较适合用于存储一些简单的 文本数据或二进制数据 ...

  5. 系统中的文件存储方案

    项目中经常要用到文件存储 方案1: 文件传给后端,后端存到本地,当静态资源 方案2: 文件传给后端,后端上传到文件服务器(如minio) 方案3: 前端从后端获取到文件服务器的账户和密码,然后前端直接 ...

  6. Java 在指定目录中创建文件

    使用 File 类的 file.createTempFile() 方法在指定目录中创建文件 完整代码 import java.io.File;public class Main {public sta ...

  7. Java在WEB项目中获取文件路径

    2019独角兽企业重金招聘Python工程师标准>>> jsp中获得文件路径 1.根目录所对应的绝对路径:request.getRequestURI(): 2.文件的绝对路径:app ...

  8. Android中的文件存储问题

    Android Devicer Monitor 的常见问题 Android系统中主要提供了三种方式用于简单地实现数据持久化功能,即 1:文件存储 2:SharedPreferecne存储 3:数据库存 ...

  9. java 从网络Url中下载文件

    转自:http://blog.csdn.net/xb12369/article/details/40543649 /*** 从网络Url中下载文件* @param urlStr* @param fil ...

  10. java 读取jar包中的文件

    文章目录 项目resource中文件路径和jar包中文件路径的区别 正常读取 jar包读取 完整代码: 项目resource中文件路径和jar包中文件路径的区别 打成jar包后,是一个整体的文件. 正 ...

最新文章

  1. win7 将文件的背景色改为绿色
  2. 全网最深刻的理解音频转码swr_convert(2019/10/29已补充修正)
  3. tfrcw函数用法_open函数
  4. mysql json函数_Mysql里的JSON系列操作函数
  5. 公司的Java框架应具备的通用功能
  6. 刚装的系统没有sql server(mssqlserver)_数据库与SQL学习
  7. (三)Linux 安装
  8. 微信小程序开发实战——模块化
  9. 易语言c编译,易语言命令行编译工具免费版下载_易语言命令行编译工具最新版下载_3DM软件...
  10. 什么是发动机号,发动机号码是什么?
  11. 蓝桥杯 带分数 By Assassin
  12. nginx url中带中文不能访问
  13. O2O商城网站建设方案
  14. 校招软件测试面试问题总结
  15. 控制台报错:java.security.InvalidKeyException: Illegal key size
  16. Idea中的数据库管理工具
  17. 手把手教你使用curl2py自动构造爬虫代码并进行网络爬虫
  18. 揭秘中医养生之道,中药世家达人教你从喝茶开始养生
  19. 圣地亚哥大学 学计算机 咋样,圣地亚哥大学的计算机专业如何?
  20. 2022国赛11:神州无线AC和AP三种认证方法

热门文章

  1. 智能告警——企业IT系统神经中枢
  2. 做了 7 年开源数据库开发,我学到了什么?
  3. KK集团完成门店系统一期上云
  4. 黑客松Demo: Kata 的下一代镜像系统
  5. 谷歌android q 安装,谷歌修复了Pixel智能机安装Android Q Beta 4后循环重启的bug
  6. 【图像去噪】基于matlab BM3D算法图像去噪【含Matlab源码 1779期】
  7. 【雷达通信】基于matlab GUI雷达定位【含Matlab源码 302期】
  8. htmlmo标签,HTML5 MathML
  9. linux access函数报错,详解汇编语言MOV指令
  10. c语言累加和校验_累加和校验算法(CheckSum算法)