Android将数据存储到应用的数据目录下
下面是具体代码,其中MainActivity.java的部分代码有修改,在文章后面给出
logindemo_layout.java
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/background1"> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:padding="30dp"
android:orientation="vertical"> <TextView
android:layout_width="wrap_content"
android:layout_marginLeft="30dp"
android:drawableLeft="@mipmap/ic_launcher_round"
android:text="家庭记账本"
android:textSize="40sp"
android:layout_height="wrap_content"/> <EditText
android:layout_width="match_parent"
android:layout_marginTop="30dp"
android:id="@+id/et_username"
android:layout_height="wrap_content"
android:hint="用户名" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_password"
android:hint="密码" />
<Button
android:layout_width="match_parent"
android:text="登录"
android:textSize="20sp"
android:id="@+id/bt_login"
android:layout_height="wrap_content"/> <RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="没有账号,立即去注册"
android:textColor="#00ffff"
android:textSize="16sp" />
</RelativeLayout> </LinearLayout> </RelativeLayout>
MainActivity.java
package com.example.logindemo; import androidx.appcompat.app.AppCompatActivity; import android.nfc.Tag;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream; public class MainActivity extends AppCompatActivity { private static final String TAG ="MainActivity";
private TextView mUsername;
private TextView mPassword;
private Button mLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.logindemo_layout);
//第一步,找到控件
initViews();
//第二步,给我们的登录按钮设置监听事件
initListener();
} /**
* 这个方法,我们用来找对应的控件
*/
private void initViews(){
mUsername= (TextView)this.findViewById(R.id.et_username);
mPassword= (TextView)this.findViewById(R.id.et_password);
mLogin = (Button)this.findViewById(R.id.bt_login);
}
/**
* 这个方法就是给登录按钮设置点击的监听
*/
private void initListener(){
mLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG,"点击了登录按钮");
handlerLoginEvent(v);
}
});
} /**
* 处理登录事件
* @param v
*/
private void handlerLoginEvent(View v) {
//第三部,我们要拿到界面上的信息,包括账号和密码
//账号
String usernameText =mUsername.getText().toString();
//密码
String passwordText =mPassword.getText().toString();
//把账号和密码保存起来
saveUserInfo(usernameText,passwordText);
}
private void saveUserInfo(String usernameText,String passwordText){
Log.d(TAG,"保存用户信息");
File file =new File("info.txt");
try {
FileOutputStream fileOutputStream = new FileOutputStream(file);
//以特定的格式存储
fileOutputStream.write((usernameText+"***"+passwordText).getBytes());
fileOutputStream.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
点击登录后,发现程序崩了

为什么我们直接写一个文件名的时候,去写文件,报出的异常是read-only。
在安卓系统中,每一个应用就相当于一个用户,每个用户(应用)的权限是特定的,不能够操作其它应用的内容



找到我们的项目


查看我们的info文件应该存放的目录
修改其中saveUserInfo方法
private void saveUserInfo(String usernameText,String passwordText){
Log.d(TAG,"保存用户信息");
try {
File file =new File("/data/data/com.example.logindemo/info.txt");
if(file.exists()){
file.createNewFile();
}
FileOutputStream fileOutputStream = new FileOutputStream(file);
//以特定的格式存储
fileOutputStream.write((usernameText+"***"+passwordText).getBytes());
fileOutputStream.close();
}catch (Exception e){
e.printStackTrace();
}
}

点击登录


查看发现info.txt文件,且内容为zzw***123说明保存成功。
还有另一种方法
通过Android Devices Monitor查看
https://www.cnblogs.com/rivers-enduring/p/9212111.html
打开后,在File Explorer下找到包/data/data/com.example.logindemo/


选中info.txt,右上角有导出
导出到桌面,进行查看

Android将数据存储到应用的数据目录下的更多相关文章
- Android中数据存储(一)
国庆没有给国家添堵,没有勾搭妹子,乖乖的写着自己的博客..... 本文将为大家介绍Android中数据存储的五种方式,数据存储可是非常重要的知识哦. 一,文件存储数据 ①在ROM存储数据 关于在ROM ...
- Android本地数据存储复习
Android本地数据存储复习 Android无论是应用层还是系统层都需要在本地保存一些数据,尤其在应用层中使用的就更为普遍,大体有这么几种:SharedPreference,file,sqlite数 ...
- android学习笔记45——android的数据存储和IO
android的数据存储和IO SharedPreferences与Editor简介 SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此其保存的数据主要是简单的类型的ke ...
- Android实现数据存储技术
转载:Android实现数据存储技术 本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用Shar ...
- android中数据存储
android中数据存储 Android 中存储数据的方式有五种:SQLite数据库.文件存储.内容提供者.网络.SharedPreferences(Key----value)五种存储方式. ...
- Android中数据存储(四)——ContentProvider存储数据
目录(?)[+] 当一个应用程序在Android中安装后,我们在使用应用的过程中会产生很多的数据,应用都有自己的数据,那么我们应该如何存储数据呢? 数据存储方式 Android 的数据存储有5种方 ...
- Android中数据存储(三)——SQLite数据库存储数据
当一个应用程序在Android中安装后,我们在使用应用的过程中会产生很多的数据,应用都有自己的数据,那么我们应该如何存储数据呢? 数据存储方式 Android 的数据存储有5种方式: 1. Share ...
- 关于Android开发数据存储的方式(一)
关于Android开发数据存储方式(一) 在厦门做Android开发也有两个月了,快情人节了.我还在弄代码. 在微信平台上开发自己的APP,用到了数据存储的知识,如今总结一下: 整体的来讲.数据存储方 ...
- Android本地数据存储: ASimpleCache
一:前言 在上一篇博客Android本地数据存储: Reservoir 博客中,我提到,除了Reservoir库,还可以采用ASimpleCache开源库,来实现本地数据存储.昨天并没有仔细的对比Re ...
随机推荐
- kafka connector
Kafka Connect 是一种用于在 Kafka 和其他系统之间可扩展的.可靠的的流式传输数据的工具.它使得能偶快速定义将大量数据集合移入和移除 kafka 连接器变得简单. kafka conn ...
- Python笔记⑤爬虫
爬虫的前奏 # 爬虫前奏 # 明确目的 # 找到数据对应的网页 # 分析网页的结果找到数据所在的标签位置 # 模拟HTTP请求,向服务器发送这个请求,获取到服务器返回给我们的HTML # 用正则表达式 ...
- linux修改文件的权限和修改文件所有者和所属组
文件设定法:chmod [who] [+][-][=] [mode] who 文件所有者:u 文件所属组:g 其他:o 所有人:a + 添加权限 - 减少权限 = 覆盖原来权限 权 ...
- ThinkPHP6源码:从Http类的实例化看依赖注入是如何实现的
ThinkPHP 6 从原先的 App 类中分离出 Http 类,负责应用的初始化和调度等功能,而 App 类则专注于容器的管理,符合单一职责原则. 以下源码分析,我们可以从 App,Http 类的实 ...
- 操作系统OS - 反置页表
1. https://blog.csdn.net/wuyuegb2312/article/details/16359821 2. https://www.youtube.com/watch?v=YQ3 ...
- IDEA 查看某个class的maven引用依赖&如何展示Diagram Elements
1.打开对应的class,如下图所示,至于具体快捷键就不说了,我是设置的eclipse的快捷键: 2.定位到对应jar,记下jar名称及版本: 3.在右侧栏点击maven,再在展出的视图中找到对应的m ...
- element-ui的el-table的表头与列不对齐
最好加到全局样式中: body .el-table th.gutter{ display: table-cell!important; }
- teraterm中状态框statusbox
;Author : Bing ;Date : 1/17/2019;Usage: modify log drictory according to actual drictorylogfile=&quo ...
- centos将uwsgi添加为系统服务
如果退出ssh 链接, 都会导致uwsgi进程关闭 这时, 我们需要进行管理软件管理uwsgi进行的运行, centos系统中我们采用 systemd, 让我们的项目变为系统服务 第一步: 首先 vi ...
- Docker示例命令
1.docker run -t -i -v /root/workspace/node:/home/exam:rw docker.io/node bin/sh -t 给容器挂载一个伪终端 - ...