Android初学笔记——内部存储器的读写

手机的内存分为运行内存(RAM)和手机的存储容量(ROM),当然大部分手机还支持外部存储卡,今天的只是在手机的内存空间中进行简单的读写操作

下面是一个登录界面和该界面的xml文件内容

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:gravity="center_vertical"
 6     tools:context=".MainActivity" >
 7
 8     <EditText
 9         android:id="@+id/edit_name"
10         android:layout_width="match_parent"
11         android:layout_height="wrap_content"
12         android:hint="@string/login_username"/>
13     <EditText
14         android:id="@+id/edit_password"
15         android:layout_width="match_parent"
16         android:layout_height="wrap_content"
17         android:hint="@string/login_password"
18         android:password="true"
19         android:layout_below="@id/edit_name"/>
20     <LinearLayout
21         android:layout_width="match_parent"
22         android:layout_height="wrap_content"
23         android:orientation="horizontal"
24         android:layout_below="@id/edit_password">
25
26         <CheckBox
27             android:id="@+id/choice"
28             android:layout_width="0dp"
29             android:layout_height="wrap_content"
30             android:layout_weight="1"
31             android:text="@string/login_check"/>
32         <Button
33             android:id="@+id/btn_login"
34             android:layout_width="wrap_content"
35             android:layout_height="wrap_content"
36             android:text="@string/btn_login"/>
37     </LinearLayout>
38 </RelativeLayout>

一个简单的相对布局页面,选择是否保存账户和密码,点击登录,会在手机内部存储空间里生成一个相应的文件,文件类型自行决定,在这里就用一个简单的文本文档来保存账户和密码,部分代码如下:

public void onClick(View view) {
        switch (view.getId()) {
        case R.id.btn_login:
            String name=editName.getText().toString();
            String password=editPassword.getText().toString();
            if(choice.isChecked()){
                try {
                    File file=new File("data/data/com.zzqhfuf.innerstore/login.txt");
                    fos = new FileOutputStream(file);
                    fos.write((name+"#"+password).getBytes());
                    fos.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            Toast.makeText(this, "登陆成功", 0).show();
            break;

        default:
            break;
        }
    }

这里当点击按钮后,在手机中的某个位置生成一个txt文件,通过FileOutputStream将用户名和密码写入到文本中,然后关闭文件输出流,密码和账户用“#”好分割,方便取出。后面的Toast没太大意义..

接下来就是文件的读取了,一开始进来就会去读取文件,因此首先要判断文件是否存在。

file=new File("data/data/com.zzqhfuf.innerstore/login.txt");
            if(file.exists()){
                FileInputStream fis=new FileInputStream(file);
                byte[] b=new byte[1024*4];
                int hasRead=0;
                String s;
                while((hasRead=fis.read(b))>0){
                    s=new String(b, 0, hasRead);
                    String[] strs=s.split("#");
                        editName.setText(strs[0]);
                        editPassword.setText(strs[1]);
                        choice.setChecked(true);
                }
                fis.close();
            }

当然,用户下次可能选择不保存密码和账户,但上次有保存过文件,这样就达不到目的。所以在用户不选择保存的情况时,应删除保存的文件

if(file.exists()){//文件存在
                    if(file.isFile())//判断是否为文件
                        file.delete();
                }
时间: 2024-09-29 08:24:00

Android初学笔记——内部存储器的读写的相关文章

Android初学笔记——xml文件的读写

利用XmlSerializer和XmlPullParser对xml文件进行读写操作 下面是XmlSerializer在手机内存中写入xml文件的内容: public void writeXML(){ File file =new File(this.getFilesDir(), "test.xml"); XmlSerializer s=Xml.newSerializer(); try { FileOutputStream fos = new FileOutputStream(file)

Android学习笔记(四三):文件访问

之前我们学习了通过preference和SQLite数据库进行数据存储,也可以通过文件方式.文件可以是在应用打包时预置,也可以是应用所生成. 文件访问有两种方式:一:静态数据的文件可以防止在res/raw中,这些文件是只读的,只有在应用版本升级的时候进行修改,或者我们先读出这些数据,通过 reference的方式来处理,这样以后可以进行修订,但是这种方式,会有两份数据保存.二:另一种方式是通过URL访问文件,动态数据的读取也可以采用SQLite3的方式. res/raw/下静态文件的读取 在re

Android学习笔记(四九):通过Content Provider访问数据

在上次笔记中,我们编写了自己的Provider,这次笔记,我们将通过Content Provider的Uri接口对数据进行访问,重写Android学习笔记(四二)中例子.在这里我们不在充分描述相关UI如何编写,可以到笔记(四二)中详细查看,重点讲述如何实现数据的访问. 读取信息 读取信息方式,在笔记(四七)中已经介绍,代码如下 private voidread(){     /* 通过managedQuery读取,第1参数表示URI, 第2参数表示所需读取的信息,第3个参数是限制条件,类似SQL

【转】Pro Android学习笔记(五):了解Content Provider(上)

Content Provider是抽象数据封装和数据访问机制,例如SQLite是Android设备带有的数据源,可以封装到一个content provider中.要通过content provider进行读写,需要使用URI.推荐阅读Android学习笔记(四七):Content Provider初谈和Android联系人信息.Android学习笔记(四八):提供自己的Content Provider和Android学习笔记(四九):通过Content Provider访问数据.Content

AS3 初学笔记 actionscript-之变量

变量 变量可用来存储程序中使用的值.要声明变量,必须将 var 语句和变量名结合使用.在 ActionScript 2.0 中,只有当您使用类 型注释时,才需要使用 var 语句.在 ActionScript 3.0 中,总是需要使用 var 语句.例如,下面的 ActionScript 行声明一个名 为 i 的变量: var i; 如果在声明变量时省略了 var 语句,则在严格模式下会出现编译器错误,在标准模式下会出现运行时错误.例如,如果以前未 定义变量 i,则下面的代码行将产生错误: i;

Android开发笔记(一百零九)利用网盘实现云存储

网盘存储 个人开发者往往没有自己的后台服务器,但同时又想获取app的运行信息,这就要借助于第三方的网络存储(也叫网盘.云盘.微盘等等).通过让app自动在网盘上存取文件,可以间接实现后台服务器的存储功能,同时开发者也能及时找到app的用户信息. 曾几何时,各大公司纷纷推出免费的个人网盘服务,还开放了文件管理api给开发者调用,一时间涌现了网盘提供商的八大金刚:百度网盘.阿里云.华为网盘.腾讯微云.新浪微盘.360云盘.金山快盘.115网盘.可是好景不长,出于盈利.监管等等因素,各大网盘开放平台要

【转】 Pro Android学习笔记(五五):调试和分析(3):adb命令、模拟器控制台和StrictMode

目录(?)[-] adb命令 模拟器Console StrictMode adb命令 我们在学习SQLite的使用,介绍过部分adb命令的使用,见Pro Android学习笔记(五):了解Content Provider(上) . abd –e shell -e是表面连接模拟器emulator,-d则是连接设备.在模拟器中,我们有一个提升的Linux权限,而在真实设备是没有的,我们可以在模拟器中处理SQLite数据,但是不能在真实设备这样做,即便是我们自己部署的应用. 模拟器Console 我们

【Android 初学】8、进度条(ProgressBar、SeekBar、RatingBar)

Start Android 现在发现每个控件的使用方法都大同小异,所以决定加快学习步骤,这一部分的笔记就写的简略了. 1.Android当中的进度条 2.各种进度条之间的关系 3.ProgressBar进度条的风格 4.ProgressBar的使用方法 ProgressBar的Style 主要有两大类 进度条的主要属性 进度条最大值:max 当前进度:progress 次要进度的值:SecondaryProgress 1.SeekBar的主要属性 1)进度条最大值:max 2)当前进度:prog

Android开发笔记(一百一十七)app省电方略

电源管理PowerManager PowerManager是Android的电源管理类,用于管理电源操作如睡眠.唤醒.重启以及调节屏幕亮度等等. PowerManager的对象从系统服务POWER_SERVICE中获取,它的主要方法如下: goToSleep : 睡眠,即锁屏. wakeUp : 唤醒,即解锁. reboot : 重启. 另有下列几个隐藏的方法: getMinimumScreenBrightnessSetting : 获取屏幕亮度的最小值. getMaximumScreenBri