android之文件存储和读取
一、权限问题
手机中存储空间分为ROM和SDcard,ROM中放着操作系统以及我们安装的APP,而sdcard中一般放置着我们APP产生的数据。当然,Android也为每个APP在ROM中创建一个数据存储空间,具体目录是/data/data下。在真机中调试中,该目录对于其他用户是没有开启任何权限,所以在DDMS中我们是打不开该目录的。
解决方案就是我们通过adb登录到我们手机上,然后直接切换到root用户,这时后手机可能会询问是否授权,我们则选择允许。这样我们就成为root用户了。然后我们在更改/data目录的权限,这样就能在DDMS上看到/data下的内容了。具体操纵如下:
二、布局设置
- <?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:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingBottom="@dimen/activity_vertical_margin"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- android:orientation="vertical"
- tools:context="xidian.dy.com.chujia.MainActivity">
- <EditText
- android:id="@+id/username"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:hint="请输入用户名"/>
- <EditText
- android:id="@+id/password"
- android:inputType="textPassword"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:hint="请输入密码"/>
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
- <CheckBox
- android:id="@+id/remember"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="记住用户名和密码"
- android:layout_centerVertical="true"/>
- <Button
- android:id="@+id/login"
- android:layout_alignParentRight="true"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="登录"/>
- </RelativeLayout>
- </LinearLayout>
三、java代码
- package xidian.dy.com.chujia;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.telephony.SmsManager;
- import android.util.Log;
- import android.util.PrintWriterPrinter;
- import android.view.View;
- import android.widget.Button;
- import android.widget.CheckBox;
- import android.widget.EditText;
- import android.widget.Toast;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.util.List;
- public class MainActivity extends AppCompatActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- Button bt = (Button) findViewById(R.id.login);
- bt.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- EditText etUsername = (EditText) findViewById(R.id.username);
- String username = etUsername.getText().toString();
- EditText etPassword = (EditText) findViewById(R.id.password);
- String password = etPassword.getText().toString();
- Log.e("Login", "登录成功");
- CheckBox cb = (CheckBox) findViewById(R.id.remember);
- if(cb.isChecked()){
- String path = "/data/data/xidian.dy.com.chujia/info.txt";
- File file = new File(path);
- PrintWriter pw = null;
- try {
- pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file))));
- } catch (FileNotFoundException e) {
- Log.e("MainActivity","file not found");
- }
- pw.println(username);
- pw.println(password);
- pw.close();
- }
- }
- });
- }
- }
Android为每个app在/data/data下创建一个文件夹,文件夹的名字就是APP的包名。我们的APP报名为xidian.dy.com.chujia,所以为了保存用户数据,我在/data/data/xidian.dy.com.chujia/创建一个infro.txt文件夹,然后将用户名和密码包存到该文件夹下。对用户名和密码的保存就使用普通的java IO流即可。
三、文件之读操作
使用普通的IO流将info.txt文件中的数据读取出来,这里不牵扯读写权限问题,因为该线程的所属用户是对自己的目录进行操作的。
- package xidian.dy.com.chujia;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.CheckBox;
- import android.widget.EditText;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- public class MainActivity extends AppCompatActivity {
- private EditText etUsername;
- private EditText etPassword;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- Button bt = (Button) findViewById(R.id.login);
- etUsername = (EditText) findViewById(R.id.username);
- etPassword = (EditText) findViewById(R.id.password);
- if (bt != null)
- bt.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String username = null;
- String password = null;
- if (etUsername != null)
- username = etUsername.getText().toString();
- if (etPassword != null)
- password = etPassword.getText().toString();
- Log.e("Login", "登录成功");
- CheckBox cb = (CheckBox) findViewById(R.id.remember);
- if (cb != null && cb.isChecked()) {
- File file = new File(getFilesDir(), "info.txt");
- PrintWriter pw;
- try {
- pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file))));
- pw.println(username);
- pw.println(password);
- pw.close();
- } catch (FileNotFoundException e) {
- Log.e("MainActivity", "file not found");
- }
- }
- }
- });
- this.readAccount();
- }
- public void readAccount() {
- File file = new File(getFilesDir(), "info.txt");
- if (file.exists()) {
- try {
- BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
- String str = br.readLine();
- if (etUsername != null)
- etUsername.setText(str);
- str = br.readLine();
- if (etPassword != null)
- etPassword.setText(str);
- br.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
android之文件存储和读取的更多相关文章
- Linux基础篇学习——Linux文件系统之文件存储与读取:inode,block,superblock
Linux文件类型 代表符号 含义 - 常规文件,即file d directory,目录文件 b block device,块设备文件,支持以"block"为单位进行随机访问 c ...
- 【Android】14.2 外部文件存储和读取
分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 1.基本概念 内部存储的私有可用存储空间一般都不会很大,对于容量比较大的文件,例如视频等,应该将其存储在外部存储设 ...
- 【Android】14.1 内部文件存储和读取
分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 内部存储(Internal storage)是指将应用程序建立的私有文件保存在内部存储器(移动经销商卖的那种容量较 ...
- 19.Android之文件存储方法学习
Android开发中会用到文件存储,今天来学习下. 先改下布局界面: <?xml version="1.0" encoding="utf-8"?> ...
- Android学习——文件存储
在Andriod开发中,文件存储和Java的文件存储类似.但需要注意的是,为了防止产生碎片垃圾,在创建文件时,要尽量使用系统给出的函数进行创建,这样当APP被卸载后,系统可以将这些文件统一删除掉.获取 ...
- Android File文件存储功能
1.介绍 2.使用方法 3.文件存储位置 4.java后台代码 package com.lucky.test47file; import android.support.v7.app.AppCompa ...
- android 开发-文件存储之读写sdcard
android提供对可移除的外部存储进行文件存储.在对外部sdcard进行调用的时候首先要调用Environment.getExternalStorageState()检查sdcard的可用状态.通过 ...
- Android使用文件存储数据
Android上最基本的存储数据的方式即为使用文件存储数据,使用基本的Java的FileOutStream,BufferedWriter,FileInputStream和BufferedReader即 ...
- Android 使用SQLite存储以及读取Drawable对象
在进行Android开发过程中,我们经常会接触到Drawable对象,那么,若要使用数据库来进行存储及读取,该如何实现? 一.存储 //第一步,将Drawable对象转化为Bitmap对象 Bitma ...
随机推荐
- Python基础之函数等等
三元运算 三元运算(三目运算),是对简单的条件语句的缩写. 1 2 3 4 5 # 书写格式 result = 值1 if 条件 else 值2 # 如果条件成立,那么将 "值1&q ...
- 一个fork的面试题
前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下.这个题是这样的: 题目:请问下面的程序一共输出多 ...
- java并发编程实践笔记
文章转自:http://kenwublog.com/java-concurrency-in-practise-note 1, 保证线程安全的三种方法 :a, 不要跨线程访问共享变量b, 使共享变量是 ...
- appium 常用api介绍(2)
前言:接着上一篇继续讲常用的一些api 参考博文:http://blog.csdn.net/bear_w/article/details/50330565 1.send_keys send_keys( ...
- Java语法结构
一.顺序结构(从上往下依次执行) 顺序结构语法比较简单,从上往下依次执行即可. 二.选择结构(选择性执行,如果....则.....) 1.if 语句 if语句,作用是根据判断结果为真或假,选择其中一个 ...
- Mybatis框架_part1
mybatis介绍 mybatis就是一个封装了jdbc的持久层框架,它的前身是ibatis.Mybatis与hibernate一样都是持久层框架,但是它与hibernate不同的是,它不是一个完全的 ...
- 边工作边刷题:70天一遍leetcode: day 85-2
Paint Fence 要点: 这题是求number of ways,如果是相邻不相同颜色,那么就trivial了:k*(k-1)^(n-1).所以这里no more than two adjacen ...
- 对Spring的IoC和DI最生动的解释
首先想说说IoC(Inversion of Control,控制倒转).这是spring的核心,贯穿始终.所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系 ...
- 测试 Mono 安装
测试 Mono 安装 为了测试核心编译器(mcs)和运行时(mono),应该创建一个简单的程序并编译它.可以在喜欢的任何文本编辑器中创建程序.这里采用一种快速而简陋的方法创建该文件(虽然没有任何格式化 ...
- 迷你DVD管理器项目
package chapter5; import java.util.*; public class MiniDVD { public static void main(String[] args){ ...