(Andorid基础)通过内部存储保存数据于文件案例

SE-0526激光避障雷达扫描传感器输入输出连线方法及PLC联机实例说明 SE-0526激光避障雷达扫描传感器广泛应用于原材料运输与处理、移动装配、托盘或货架运输、产成品自动运输、生产线自动对接,餐厅自助送餐等AGV小车、服务机器人、仓储机器人、无人叉车导航、避障、定位等。 本文重点介绍SE-0526激光避障雷达扫描传感器输入输出连线方法及PLC联机实例说明。 阅读详情

通过内部存储读写文件 ,从而保存数据,但是 不要要保存大量

万事页面始

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    android:orientation="vertical"
    android:background="#E6E6E6"
    >

    <ImageView
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:src="@drawable/ic_launcher_foreground"
        android:layout_marginTop="30dp"
        android:layout_gravity="center_horizontal"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:background="@android:color/white"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="账号"
            android:id="@+id/tv_username"
            android:textColor="#000"
            android:textSize="20sp"
            android:padding="10dp"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/et_username"
            android:background="@null"
            android:padding="10dp"
            android:layout_marginLeft="5dp"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:background="@android:color/white"
        android:orientation="horizontal"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密码"
            android:id="@+id/tv_password"
            android:textColor="#000"
            android:textSize="20sp"
            android:padding="10dp"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/et_password"
            android:background="@null"
            android:padding="10dp"
            android:layout_marginLeft="5dp"
            />
    </LinearLayout>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登录"
        android:id="@+id/btn_login"
        android:layout_marginTop="35dp"
        android:background="@android:color/holo_green_light"
        />
</LinearLayout>

在这里插入图片描述

创建数据存储工具类FileSaveQQ :

public class FileSaveQQ {
    //保存账号密码的方法
    public static boolean save(Context context , String username , String  password){
        //获得输出流
        FileOutputStream fileOutputStream = null;

        try {
            //获取文件的输出流
            fileOutputStream = context.openFileOutput("data.txt",Context.MODE_PRIVATE);
            fileOutputStream.write((username+":"+password).getBytes());
            return true;
        } catch (FileNotFoundException e) {
            Log.e("文件操作异常","data.txt文件没找到!");
            return false;
        } catch (IOException e) {
            Log.e("文件操作异常","写文件失败");
            return false;
        }finally {
            try {
                if (fileOutputStream!=null){
                    fileOutputStream.close();
                }
            } catch (IOException e) {
                Log.e("文件操作异常","关闭文件输出流失败!");
            }
        }
    }
    //获取已经保存的账号密码
    public static Map<String ,String > getUserAccount(Context context){
        //定义临时变量content
        String  content = "";
        FileInputStream fileInputStream = null;
        try {
             fileInputStream = context.openFileInput("data.txt");

             //读之前创建字节缓存区
            byte[] buffer = new byte[fileInputStream.available()];
            fileInputStream.read(buffer);
            content = new String(buffer);//将缓存的字节数组构造字符串对象
            Map<String ,String > userMap = new HashMap<>();
            String[] infos = content.split(":");  //第一个是账号  ,第二个是密码
            userMap.put("username" , infos[0]);
            userMap.put("password" , infos[1]);

            return userMap;
        } catch (FileNotFoundException e) {
            Log.e("文件操作失败" , "找不到data.txt文件");
            return null;
        } catch (IOException e) {
            Log.e("文件操作失败" , "开启缓存失败");
            return null;
        }finally {
            if (fileInputStream!=null){
                try {
                    fileInputStream.close();
                } catch (IOException e) {
                    Log.e("文件操作失败" , "关闭文件输入流失败!");
                }

            }

        }
    }
}

编写Activity类:

没啥好说的
初始化页面 继承监听接口, 设置按钮监听 , 调用静态方法 然后Toast提示

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    //两个输入框,一个按钮
    private Button button;
    private EditText ed_username , ed_password;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        //获取保存的账号密码
        Map<String , String >  userInfo  = FileSaveQQ.getUserAccount(this);
        if (userInfo!=null){
            ed_password.setText(userInfo.get("password"));
            ed_username.setText(userInfo.get("username"));
        }
    }

    private void  initView(){
        ed_password = (EditText) findViewById(R.id.et_password);
        ed_username = (EditText)findViewById(R.id.et_username);
        button = findViewById(R.id.btn_login);
        button.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        //获取页面上的账号密码
        String username = ed_username.getText().toString().trim();//去除前后空格
        String password = ed_password.getText().toString().trim();//去除前后空格
        //判断空值
        if (TextUtils.isEmpty(username)){
            Toast.makeText(this,"请输入用户名" , Toast.LENGTH_SHORT).show();
            return;
        }
        if (TextUtils.isEmpty(password)){
            Toast.makeText(this,"请输入密码" , Toast.LENGTH_SHORT).show();
            return;
        }
        //保存信息
        boolean save = FileSaveQQ.save(this, username, password);
        if (save){
            Toast.makeText(this,"登录成功,您的信息已经保存!" , Toast.LENGTH_SHORT).show();
        }else {
            Toast.makeText(this,"登录成功,但您的信息保存失败!" , Toast.LENGTH_SHORT).show();
        }

    }
}

改造

创建文件真的繁琐,下面是SharedPreferences存储

页面不变:

就修改工具类:

public class FileSaveQQ {
    //保存账号密码的方法
    public static boolean save(Context context , String username , String  password){
       //获取对象
        SharedPreferences sharedPreferences = context.getSharedPreferences("data",Context.MODE_PRIVATE);
        SharedPreferences.Editor edit = sharedPreferences.edit();
        edit.putString("username" , username);
        edit.putString("password" , password);
        edit.apply();
        return true;

    }
    //获取已经保存的账号密码
    public static Map<String ,String > getUserAccount(Context context){
        //获取对象
        SharedPreferences sharedPreferences = context.getSharedPreferences("data",Context.MODE_PRIVATE);
        String username = sharedPreferences.getString("username", null);
        String password = sharedPreferences.getString("password", null);
        Map<String  , String  > map = new HashMap<>();
        map.put("username",username);
        map.put("password",password);
        return map;
    }
}

ps:书本总结

书旗app字符串加密分析 本文案例是对书旗app搜索接口的请求密文进行分析和逆向。 阅读详情

相关推荐

S32K144之芯片锁死解锁——关闭debug端口

S32K144之芯片锁死及解锁 经常捣鼓单片机就会发现,时常会因为某些操作不当导致芯片锁死情况的发生,通过Jlink我们可以读到芯片的ID,但是无法进行Debug,这很是让人苦恼。 基于S32K144的芯片锁死,一般有如下几种可能: 1、时钟配置异常,过高的配置时钟频率以及不配置时钟,都有可能造成芯片保护锁死,我就曾经因为不注意把时钟配置代码注释掉,导致芯片锁死。 2、我是微软雅黑烧写断电,如果在...

weixin_41935674的博客 1万+

android输出日志到记录本地文件

做安卓开发难免有不能当面调试的情况,这时候就要获取用户设备上的操作日志用于分析问题原因.案例使用LogUtils,可以在maven找最新的包,目前最新1.0.3 1.导入依赖 // https://mvnrepository.com/artifact/com.common.log/LogUtils implementation group: 'com.common.log', name: 'LogUtils', version: '1.0.3' 2.初始化设置,如果是外部存储需要在获取读写权限以后才

懒人鱼 3261

技术解析:PETR如何通过3D位置编码革新多视角3D目标检测

本文深入解析了PETR模型如何通过创新的3D位置编码技术革新多视角3D目标检测。它摒弃了DETR3D复杂的投影采样机制,通过3D坐标生成器和编码器,将3D几何信息直接注入2D图像特征,构建出3D感知特征。该方法简化了流程,提升了模型对空间关系的理解能力与训练稳定性,为自动驾驶等领域的精准感知提供了新思路。

weixin_29079743的博客 213

Android 把Log日志文件写入到本地txt文件中

package topteam.com.myproject.utin; import android.os.Environment; import android.util.Log; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.OutputS

le9406的博客 3516

【数据结构】平行四边形数量

平行四边形个数,哈希表,散列

cyy010617的博客 4009

vscode 配置 codeql

vscode 配置 codeql

SHELLCODE_8BIT的博客 1439

Android数据存储————文件存储(内部存储)

存储特点 将数据存储在app的目录下,内部存储的数据只能被自己的应用程序访问到,存储空间有限。 存储位置 /data/data/&amp;amp;amp;lt;package_name&amp;amp;amp;gt;/files 存储模式 MODE_PRIVATE : 覆盖 MODE_APPEND: 追加 方法 保存:openFileInput(filename, mode) 读取:openFileOutput(filename) 例子:存储、...

LuckyDucky的博客 755

PentAGI自动渗透测试平台搭建与使用

但是PentAGI的缺陷也比较明显,一个是自动化程度高带来过程的介入困难,整个渗透的过程都交给AI自动决策,无法进行人工调整,耗时较长;从上述过程来看PentAGI似乎是一个比较“可用”的AI自动化渗透测试平台,但是在继续等待测试的过程中,PentAGI的一些缺点也暴露了出来,一个是测试的过程非常漫长,因为PentAGI是使用配置大模型API key的方式全自动运行,支持openai、deepseek等主流LLM大模型,过程中不需要人工介入,会不断自动调整,所以比较依赖于大模型本身的响应速度。

墨痕诉清风的博客 2406

Android数据存储之内部文件存储(一)

数据存储之内部文件存储

ly_rose的专栏 600

uniapp [全端兼容] - 详细实现全局修改设置字体大小功能效果,统一修改页面字号字体大小,一键改变字号整个项目立即生效,大中小字号预设、老年人大字模式场景,uniApp全平台兼容控制页面字号大小

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,修改字体大小,一键调整UniApp字体大小,实时改变不用刷新,动态设置字体大小,uniapp全局修改字体字号大小,如何控制全局字号,可调整显示的字体,全项目生效,老年人大字模式,改变所有页面的字体,全局设置字体大小,实现小中大的字体切换,设置改变全局字体大小功能,如何做到全平台兼容,H5APP实现全局字体大小调整,不兼容报错,用户设置字号,全局设置应用字体大小,大中小字体修改,页面设置page-me

🏆 前端领域优质创作者 1万+

思科 MIB 库

思科 MIB

m0_54931486的博客 770

Android将Log写入文件

为什么要将Log写入文件运行应用程序的时候,大多数是不会连接着IDE的; 而当应用程序崩溃时,我们需要收集复现步骤,在设备上复现,并进行Debug;而由于Android手机的多样性,有些问题是某个机型特有的, 这样很难去复现; 所以我们想能不能把重要的log输出在文件中,有问题,有bug直接把log发过来,这样可以大大简化复现的流程,增加Debug的速度。原理简介其实原理很简单,就是把一行行字符

TheBadWaka的博客 2万+

华为OD机考双机位C卷 - 手机App防沉迷系统(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 手机App防沉迷系统(OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 2061

Andorid中数据存储

安卓中数据存储

luohua13608236315的博客 490

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android 在内部存储读写文件

文件读写操作* Ram内存:运行内存,相当于电脑的内存* Rom内存:内部存储空间,相当于电脑的硬盘* sd卡:外部存储空间,相当于电脑的移动硬盘在内部存储空间中读写文件&gt;小案例:用户输入账号密码,勾选“记住账号密码”,点击登录按钮,登录的同时持久化保存账号和密码。界面如下: 1. 定义布局 代码如下: &lt;LinearLayout xmlns:android="http:...

weixin_34212762的博客 524

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

andorid 数据储存、SharedPreferences存储和手机内部储存

.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layou...

weixin_34107955的博客 97

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Android 保存数据到文件

转载自:http://hukai.me/android-training-course-in-chinese/basics/data-storage/files.html Android使用与其他平台类似的基于磁盘的文件系统(disk-based file systems)。本课程将描述如何在Android文件系统上使用 File 的读写APIs对Andorid的file system进行读

ylyuanlu的专栏 3929

andorid 数据存储

本文介绍Android中的5种数据存储方式。   数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据   下面将为大家一一详细介绍

MyCout的专栏 563

android内部存储 file,来自android内部存储的file.delete()返回false

我有一种方法从url下载图像并将其保存在内部存储的文件夹中public void saveDynamicImage(String url,String fileName, String folderName) {InputStream iStream;BufferedInputStream buffInputStream;ByteArrayBuffer byteArray = null;try {...

weixin_39864682的博客 214

andorid 数据存储方式

本文介绍Android平台进行数据存储的五大方式,分别如下:        1 使用SharedPreferences存储数据     2 文件存储数据           3 SQLite数据库存储数据     4 使用ContentProvider存储数据     5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPrefe

SunshineMiMi的博客 693

黑马Android:在内部存储中读写文件

android:在内部存储中读写文件

C. 1366

【Andorid数据存储】SharedPreferences存储以及查看文件方法

今天被问到一个问题,SharedPreferences存储是以什么形式存储的,是以文件形式还是内存形式? 无法回答!!特地搜索资料记录一下,同时回顾Android数据存储五种方式: 参考文章:Android数据存储五种方式总结     SharedPreference类        SharedPreference类提供了一个总体框架,使您可以保存和检索的任何基本数据类型( boolean...

songzi1228的博客 348

Android 外部存储与内部存储详解-85

一、前言 在 Android 本地数据存储之 SharePreferences 存储 中,我们已经讲了 Sp 是如何保存数据的,并且也提供了一个 Sp 的工具类,今天我们来讲解一下 Android 中本地存储数据的另外一种方式——文件存储,文件存储又分为外部存储和内部存储。 二、外部存储 2.1、概述 不一样的手机,外部存储在手机中的位置可能是不一样的,有些手机是在 storage 文件夹下,有些手机是在 mnt 文件夹下,我们通常用来表示外部存储的话,都会找一个叫做 sdcard 的文件夹,在 m

m0_50140524的博客 342

andorid view如何附带数据_android中正确保存view的状态

转载此译文须注明出处。今天我们聊一聊安卓中保存和恢复view状态的问题。我刻意强调View状态是因为我发现这个过程要比保存 Activity 和 Fragment状态稍微复杂,还有一个原因是因为网上有太多“重复造的轮子”(有时还是奇丑无比的轮子)。为什么我们需要保存View的状态?这个问题问的好!我坚信移动应用应该帮助你解决问题,而不是制造问题。想象一下一个非常复杂的设置页面:这并不是从一个移动应...

weixin_39998273的博客 241

Android数据存储之文件存储

目录结构 l  概述 l  内部存储 l  外部存储 l  总结   1概述 Android的文件存储区别于sharedPreferences方式的键值对,也区别于关系型数据库的SQLite存储。对于文件数据类型如文本、音频、视频等的存储上述两种方式不可行。Android提供了对文件存储的支持。根据文件的访问权限,可以将私有的不被其他应用程序访问的文件作为内部存储,当应用被卸载时,文

cappuccinoLau 1098

Android外部存储与内部存储完全解析

转载一、存储概述 Android提供了几种保存application持久化数据的选择。而开发者根据 数据是否为app私有 数据是否可以暴露给其他app 数据大小情况 来选择不同的方式存储数据。 1.1 存储方式 安卓提供了如下存储的方式选择: 类别 作用 Shared Preferences 以键值对形式在xml中存储配置 Internal Storage (内部存储) 设备

runHome的博客 1537
上一篇: (Android基础)Intent意图实现携带数据跳转和回传
下一篇: (Andorid基础)基于SqlLite数据库的增删查改小案例(电话簿)
皮皮大虾
博客等级 码龄7年 6粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值