热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学习笔记如何在android项目中使用文件存储的技术

一、创建新项目,修改activity_main.xml中代码:在布局中加入一个EditText,用于输入文本内容

一、创建新项目,修改activity_main.xml中代码:在布局中加入 一个EditText,用于输入文本内容

<?xml version&#61;"1.0" encoding&#61;"utf-8"?>
<LinearLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"android:orientation&#61;"vertical"android:layout_width&#61;"match_parent"android:layout_height&#61;"match_parent"><EditTextandroid:id&#61;"&#64;&#43;id/edit"android:layout_width&#61;"match_parent"android:layout_height&#61;"wrap_content"android:hint&#61;"Type something here"/>
</LinearLayout>

二、在数据被回收之前&#xff0c;将它存储到文件当中&#xff0c;修改MainActivity&#xff1a;
①在onCreate方法中&#xff0c;获取EditText实例、②重写onDestroy方法&#xff0c;保证在活动销毁前调用它、
③调用save方法&#xff0c;把输入内容存储到文件中

public class MainActivity extends AppCompatActivity {private EditText edit;&#64;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);edit&#61;(EditText) findViewById(R.id.edit);String inputText&#61;load();if (!TextUtils.isEmpty(inputText)){edit.setText(inputText);edit.setSelection(inputText.length());Toast.makeText(this,"Restoring succeeded",Toast.LENGTH_SHORT).show();}}&#64;Overrideprotected void onDestroy() {super.onDestroy();String inputText&#61;edit.getText().toString();save(inputText);}/** 如何将一段内容保存到文件中&#xff1a;* Context类提供的openFileOutput方法可以用于将数据存储到指定的文件中&#xff0c;此方法接收两个参数&#xff0c;文件名和文件的操作模式* openFileOutput方法返回一个FileOutputStream对象&#xff0c;得到这个对象以后就可以使用java流的方式将数据写入到文件中** */public void save(String inputText){FileOutputStream out&#61;null;BufferedWriter writer&#61;null;try {out&#61;openFileOutput("data", Context.MODE_PRIVATE);writer&#61;new BufferedWriter(new OutputStreamWriter(out));writer.write(inputText);} catch (IOException e) {e.printStackTrace();}finally {if (writer!&#61;null){try {writer.close();} catch (IOException e) {e.printStackTrace();}}}}
}

三、运行结果
在这里插入图片描述
输入内容&#xff0c;然后返回&#xff0c;此时输入内容被保存在文件中。验证&#xff1a;
总体思路&#xff1a;找到Android studio Monitor工具查看&#xff0c;新版AS找不到解决方法
在View->Tool Windows->Device File Explorer下面
在这里插入图片描述
找到后如下所示&#xff1a;打开/data/data/com.example.filepersistencetest/files/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
找到生成的data文件
四、修改MainActivity代码使得重新启动时&#xff0c;EditText保留上次输入的内容&#xff1a;
现在将数据保存下来的功能实现了&#xff0c;接着实现下次程序启动的时候&#xff0c;数据还原到 EditText中&#xff0c;即如何从文件中读取数据

/** 从文件中读取数据&#xff1a;使用Context类提供的openFileInput方法 &#xff0c;参数是要读取的文件名* 通过openFileInput方法获取FileInputStream对象&#xff0c;再构建一个BufferedReader对象&#xff0c;通过BufferedReader* 将文本的内容读取并且放在StringBuilder 中&#xff0c;返回读取内容即可* */public String load(){FileInputStream in&#61;null;BufferedReader reader&#61;null;StringBuilder content&#61;new StringBuilder();try {in&#61;openFileInput("data");reader&#61;new BufferedReader(new InputStreamReader(in));String line&#61;"";while ((line&#61;reader.readLine())!&#61;null){content.append(line);}} catch (IOException e) {e.printStackTrace();}finally {if (reader!&#61;null){try {reader.close();} catch (IOException e) {e.printStackTrace();}}}return content.toString();}

五、运行结果
在这里插入图片描述
输入内容后重新启动程序查看
在这里插入图片描述

完成文件存储&#xff01;


推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • Android 九宫格布局详解及实现:人人网应用示例
    本文深入探讨了人人网Android应用中独特的九宫格布局设计,解析其背后的GridView实现原理,并提供详细的代码示例。这种布局方式不仅美观大方,而且在现代Android应用中较为少见,值得开发者借鉴。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • IneedtofocusTextCellsonebyoneviaabuttonclick.ItriedlistView.ScrollTo.我需要通过点击按钮逐个关注Tex ... [详细]
author-avatar
choojo深呼吸
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有