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流即可。

时间: 2024-10-14 00:43:13

android之文件存储和读取的相关文章

Android中的File文件存储及读取file中的Bitmap

今年看了下android的文件存储,大致和java实现差不多 android提供了如下两个方法来打开本应用程序的数据文件的IO流: FileInputStream  openFileInput(fileName);  //输入流 FileOutputStream outputStream = openFileOutput(fileName, MODE_PRIVATE);  //输出流 打开输出流的方法的第二个是表示打开文件的mode,大概有一下几种: MODE_PRIVATE : 该文件只能被当

【Android】14.1 内部文件存储和读取

分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 内部存储是指将应用程序建立的私有文件保存在内部存储器(移动经销商卖的那种容量较小的手机卡)中. 应用程序可通过OpenFileInput方法和OpenFileOutput方法读取内部存储设备上的这些文件. 1.OpenFileOutput方法 该方法打开应用程序私有文件,为写入设备做准备.默认情况下,写入的文件会覆盖同名的原文件.如果要打开的文件不存在,则创建一个新文件. 该方法的语法格式如下: public

【Android】14.2 外部文件存储和读取

分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 1.基本概念 内部存储的私有可用存储空间一般都不会很大,对于容量比较大的文件,例如视频等,应该将其存储在外部存储设备(SD卡)上. 注意,不要将手机内存和手机内插入的存储卡(手机卡.SD卡)混淆在一起,内存是不能持久存储的,一关机所有信息就全部丢失了,而内部存储(移动经销商卖的手机卡,容量小,但是没有它打不了电话).外部存储(SD卡,容量大,各种文件都能保存)都是可以持久存储的设备,因此才叫文件存储. 可以通过

19.Android之文件存储方法学习

Android开发中会用到文件存储,今天来学习下. 先改下布局界面: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_

android学习十(android的文件存储)

在android系统中主要提供了三种方式用于简单的实现数据持久化功能,即文件存储,SharePreference存储以及数据库存储.当然还可以把数据保存到SD卡中. 文件存储是android中最基本的一种数据存储方式,它不对存储的内容进行任何的格式话处理,所有数据都是原封不动地保存到文件当中的,因而比较适合用于存储一些简单的文本数据或二进制数据. Context类中提供了一个openFileOutput()方法,可以用于将数据存储到指定的文件中.这个方法接收两个参数,第一个参数是文件的名,在创建

自学Android笔记——文件存储

1.文件存储简介: 文件存储是android的基本的一种数据存储方式,它与Java中的文件存储类似,都是以I/O流的形式把数据原封不动地存储到文档中,不同的是,android中的文件存储分为内部存储和外部存储. 2.内部存储: 内部存储是指应用程序中的数据以文件方式存储到设备的内部存储空间中.默认情况下,保存在内部存储内的文件是应用程序私有的,如果其他应用程序要操作本应用程序中的文件,需要设置权限.当用户卸载此应用程序时,内部存储的数据会一并清除. 内部存储使用的是Context提供的openF

Android File文件存储功能

1.介绍 2.使用方法 3.文件存储位置 4.java后台代码 package com.lucky.test47file; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Tex

Android使用文件存储数据

Android上最基本的存储数据的方式即为使用文件存储数据,使用基本的Java的FileOutStream,BufferedWriter,FileInputStream和BufferedReader即可. MainActivity.java package org.elvalad.filepersistencetest; import android.app.Activity; import android.content.Context; import android.os.Bundle; i

android 开发-文件存储之读写sdcard

android提供对可移除的外部存储进行文件存储.在对外部sdcard进行调用的时候首先要调用Environment.getExternalStorageState()检查sdcard的可用状态.通过Environment.getExternalStorageDirectory()得到Sdcard的路径.文件写入外部存储需要添加对sdcard的授权 <!-- 写sdcard需要添加写sdcard的授权 --> <uses-permission android:name="and