热门标签 | 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;


推荐阅读
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • SmartRefreshLayout自定义头部刷新和底部加载
    1.添加依赖implementation‘com.scwang.smartrefresh:SmartRefreshLayout:1.0.3’implementation‘com.s ... [详细]
  • 在一对一直播源码使用过程中,有时会出现软键盘切换闪屏问题,就是当切换表情的时候屏幕会跳动,因此要对一对一直播源码表情面板无缝切换进行优化。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • python3 logging
    python3logginghttps:docs.python.org3.5librarylogging.html,先3.5是因为我当前的python版本是3.5之所 ... [详细]
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社区 版权所有