基础学习总结(三)--文本数据读写文件、SD卡

简单的文本数据写入文件不需要权限,读写SD卡在4.0版本前需要写权限、在4.0后需要读写权限

布局:

 1 <LinearLayout 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="wrap_content"
 5     android:orientation="vertical"
 6     tools:context=".MainActivity" >
 7
 8     <EditText android:id="@+id/et_number"
 9         android:layout_width="fill_parent"
10         android:layout_height="wrap_content"
11         android:phoneNumber="true"
12         android:hint="请输入手机号" />
13
14     <EditText
15         android:id="@+id/et_pwd"
16         android:layout_width="fill_parent"
17         android:layout_height="match_parent"
18         android:hint="请输入密码"
19         android:inputType="textPassword" />
20
21     <CheckBox android:id="@+id/cb_remerber_pwd"
22         android:layout_width="wrap_content"
23         android:layout_height="wrap_content"
24         android:checked="true"
25         android:text="记住密码" />
26
27     <Button android:id="@+id/btn_Login"
28         android:layout_width="wrap_content"
29         android:layout_height="wrap_content"
30         android:text="登陆"
31          />
32
33 </LinearLayout>

Manifest.xml添加权限

1 <!-- 写入外部设备(sdka)的权限 -->
2     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
3     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

MainActivity:

 1 public class MainActivity extends Activity implements OnClickListener {
 2     private static final String TAG = "MainActivity";
 3     private EditText etNumber;
 4     private EditText etPwd;
 5     private CheckBox cbRemerber;
 6
 7     @Override
 8     protected void onCreate(Bundle savedInstanceState) {
 9         super.onCreate(savedInstanceState);
10         setContentView(R.layout.activity_main);
11         //获取控件中数据
12         etNumber = (EditText)findViewById(R.id.et_number);
13         etPwd=(EditText)findViewById(R.id.et_pwd);
14         cbRemerber=(CheckBox)findViewById(R.id.cb_remerber_pwd);
15         Button btnLogin = (Button)findViewById(R.id.btn_Login);
16         //添加点击事件
17         btnLogin.setOnClickListener(this);
18         //获取SD卡数据
19         Map<String,String> userInfo=UtilsOfSDCard.getUserInfo(this);
20         if(userInfo!=null){
21             etNumber.setText(userInfo.get("number"));
22             etPwd.setText(userInfo.get("pwd"));
23         }
24     }
25
26     @Override
27     public void onClick(View v) {
28         // TODO Auto-generated method stub
29         //1.取出账号,密码
30         String Number=etNumber.getText().toString();
31         String Pwd=etPwd.getText().toString();
32         //判断是否有值,弹出吐司
33         if(TextUtils.isEmpty(Number) || TextUtils.isEmpty(Pwd)){
34             Toast.makeText(this, "请正确数据账号、密码", Toast.LENGTH_SHORT).show();
35             return;
36         }
37         //2.判断cb是否被选中
38         if(cbRemerber.isChecked()){
39             Log.i(TAG, "记住密码"+Number+","+Pwd);
40             boolean isSuccess=UtilsOfSDCard.saveUserInfo(this,Number, Pwd);
41             if(isSuccess)
42                 Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();
43             else
44                 Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();
45         }
46
47         //3.登陆成功
48         Toast.makeText(this, "登陆成功", Toast.LENGTH_SHORT).show();
49     }
50
51
52 }

UtilsOfSDCard类:

 1 public class UtilsOfSDCard {
 2     //保存信息到sd卡
 3     public static boolean saveUserInfo(Context context, String number,String pwd){
 4         try {
 5             //获取SD卡状态
 6             String state=Environment.getExternalStorageState();
 7             //判断SD卡状态
 8             if(!Environment.MEDIA_MOUNTED.equals(state))
 9             {
10                 return false;
11             }
12             //动态获取SD卡路径
13             File sdCardFile = Environment.getExternalStorageDirectory();
14             File f=new File(sdCardFile,"qqLogin1.txt");
15             //写入流
16             FileOutputStream fos=new FileOutputStream(f);
17
18             String data=number+"##"+pwd;
19             fos.write(data.getBytes());
20             fos.flush();
21             fos.close();
22             return true;
23         } catch (Exception e) {
24             // TODO Auto-generated catch block
25             e.printStackTrace();
26         }
27
28         return false;
29     }
30
31     //返回信息
32     public static Map<String,String> getUserInfo(Context context){
33         try {
34             String state=Environment.getExternalStorageState();
35             if(!Environment.MEDIA_MOUNTED.equals(state))
36             {
37                 return null;
38             }
39             File sdCartFile=Environment.getExternalStorageDirectory();
40             File f=new File(sdCartFile,"qqLogin1.txt");
41             BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(f)));
42             String text=br.readLine();
43             br.close();
44             if(!TextUtils.isEmpty(text)){
45                 Map<String,String> userInfoMap=new HashMap<String,String>();
46                 String[] split = text.split("##");
47                 userInfoMap.put("number", split[0]);
48                 userInfoMap.put("pwd", split[1]);
49                 Log.w("UtilsOfSDCard", split[0]+","+split[1]);
50                 return userInfoMap;
51             }
52
53         } catch (Exception e) {
54             // TODO Auto-generated catch block
55             e.printStackTrace();
56         }
57
58         return null;
59     }
60 }

Utils类:

 1 public class Utils {
 2     /*
 3      * 保存用户信息
 4      * */
 5     public static boolean saveUserInfo(String number,String pwd){
 6
 7         try {
 8             String path="/data/data/com.cui.qqlogin/QQLogin.txt";
 9             //写入流
10             FileOutputStream fs=new FileOutputStream(path);
11             String data=number+"##"+pwd;
12             fs.write(data.getBytes());
13             fs.flush();
14             fs.close();
15             return true;
16         } catch (Exception e) {
17             // TODO Auto-generated catch block
18             e.printStackTrace();
19         }
20
21         return false;
22     }
23
24 public static boolean saveUserInfo(Context context, String number,String pwd){
25
26         try {
27             //动态获取文件路径
28             File filesDir = context.getFilesDir();
29             File f=new File(filesDir,"QQLogin.txt");
30             //写入流
31             FileOutputStream fs=new FileOutputStream(f);
32             String data=number+"##"+pwd;
33             fs.write(data.getBytes());
34             fs.flush();
35             fs.close();
36             return true;
37         } catch (Exception e) {
38             // TODO Auto-generated catch block
39             e.printStackTrace();
40         }
41
42         return false;
43     }
44
45     public static Map<String,String> getUserInfo(){
46         try {
47             String path="/data/data/com.cui.qqlogin/QQLogin.txt";
48             //输出流
49             FileInputStream fis=new FileInputStream(path);
50             //字符流
51             BufferedReader reader=new BufferedReader(new InputStreamReader(fis));
52             String text = reader.readLine();
53             if(!TextUtils.isEmpty(text)){
54                 String[] split=text.split("##");
55                 Map<String,String> userofMap=new HashMap<String,String>();
56                 userofMap.put("number", split[0]);
57                 userofMap.put("pwd", split[1]);
58                 return userofMap;
59             }
60
61         } catch (Exception e) {
62             // TODO Auto-generated catch block
63             e.printStackTrace();
64         }
65
66         return null;
67     }
68
69     public static Map<String,String> getUserInfo(Context context){
70         try {
71             //String path="/data/data/com.cui.qqlogin/QQLogin.txt";
72             //动态获取文件路径
73             File filesDir = context.getFilesDir();
74             File f=new File(filesDir,"QQLogin.txt");
75             //输出流
76             FileInputStream fis=new FileInputStream(f);
77             //字符流
78             BufferedReader reader=new BufferedReader(new InputStreamReader(fis));
79             String text = reader.readLine();
80             reader.close();
81             if(!TextUtils.isEmpty(text)){
82                 String[] split=text.split("##");
83                 Map<String,String> userofMap=new HashMap<String,String>();
84                 userofMap.put("number", split[0]);
85                 userofMap.put("pwd", split[1]);
86                 return userofMap;
87             }
88
89         } catch (Exception e) {
90             // TODO Auto-generated catch block
91             e.printStackTrace();
92         }
93
94         return null;
95     }
96 }

时间: 2024-10-08 02:13:05

基础学习总结(三)--文本数据读写文件、SD卡的相关文章

python学习笔记5:python读写文件

python学习笔记5:python读写文件 一.文件的打开模式 1.打开文件 1) f=open('D:\\a.txt','w') 第一个参数是文件的路径,如果只写文件的名字,默认是在当前执行目录下的文件:第二个参数是文件的打开模式 这种方式打开文件,在使用完了之后一定要记得,关闭文件: f.close() 2) with open('D:\\a.txt','w') as f 这种方式打开文件,文件在使用完后会自动关闭文件,不需要close  2. 文件的打开模式 总的来说,文件的打开模式有三

背水一战 Windows 10 (89) - 文件系统: 读写文本数据, 读写二进制数据, 读写流数据

[源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 读写文本数据 读写二进制数据 读写流数据 示例1.演示如何读写文本数据FileSystem/ReadWriteText.xaml <Page x:Class="Windows10.FileSystem.ReadWriteText" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x

【音视频连载-007】基础学习篇-SDL 播放 PCM 音频文件(上)

音视频学习入门技术文章连载: 技术开发故事会连载 [音视频连载-001]基础学习篇-SDL 介绍以及工程配置 [音视频连载-002]基础学习篇-SDL 创建窗口并显示颜色 [音视频连载-003]基础学习篇-SDL 消息循环和事件响应 [音视频连载-004]基础学习篇-SDL 加载图片并显示 [音视频连载-005]基础学习篇-SDL 加载 YUV 文件并显示 [音视频连载-006]基础学习篇-SDL 播放 YUV 视频文件]) 在前面的文章中已经能够利用 SDL 去播放 YUV 视频文件了,接下来

javascript基础学习(三)

javascript之运算符 学习要点: 表达式 运算符:一元运算符,算术运算符,关系运算符,逻辑运算符,*位运算符,赋值运算符 一.表达式 表达式有常量表达式,变量表达式,复合表达式. 二.算术运算符 一元:+(正号).-(负号).++.—— 二元:*./.%.+.- 三.关系运算符 ==.=== ps:等同运算符比相等运算符要求更为严格,等同运算符只有在两个操作数类型相同,并且值也相同的情况下才会返回true. <.<=.>.>= instanceof运算符.       in

Android中向SD卡读写数据,读SD卡和手机内存

package com.example.sdoperation; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import android.support.v7.app.Actio

Android开发 将数据保存到SD卡

前言: 使用Activity的openFileOutput()方法保存文件,文件是存放在手机空间上,一般手机的存储空间不是很大,存放些小文件还行,如果要存放像视频这样的大文件,是不可行的.对于像视频这样的大文件,我们可以把它存放在SDCard. SDCard是干什么的?你可以把它看作是移动硬盘或U盘. 在模拟器中使用SDCard,你需要先创建一张SDCard卡(当然不是真的SDCard,只是镜像文件).创建SDCard可以在Eclipse创建模拟器时随同创建,也可以使用DOS命令进行创建,如下:

Android 存储学习之保存系统短信到SD卡

本节学习,保存系统短信到SD卡中.既然是要保存系统短信到SD卡中,前提是先要拿到系统的短信,关于如何读取系统的短信,请看我的关于ContentProvider文章: Android 四大组件学习之ContentProvider三 既然知道了任务的目的,那我们就直接实现.我们先将系统的短信读出,然后保存到xml文件中,然后将xml文件写到sd卡中. 1: 先将系统短信读出 //得到ContentResolver ContentResolver cr = getContentResolver();

Android---6---将数据保存到SD卡

同样是实现上一篇文章中所需要的功能,只不过这次是将数据保存到SD卡中. MainActivity.java package com.example.qqlogin; import java.util.Map; import com.example.qqlogin.utils.utils; import com.example.qqlogin.utils.utilsOfSDCard; import android.app.Activity; import android.os.Bundle; im

JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

一.Map简述 1.1.简述 public interface Map<K,V> 类型参数: K - 此映射所维护的键的类型 key V - 映射值的类型 value 该集合提供键--值的映射.key不能重复,一对对的存储方式 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 1.2.方法 嵌套类摘要 static interface Map.Entry<K,V> 映射项(键-值对). 方法摘要 void clear() 从此映射中移除所有映射关系(可选操