zoukankan      html  css  js  c++  java
  • 基础学习总结(三)--文本、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>
    View Code

    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 }
    View Code

    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 }
    View Code

    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 }
    View Code

    ====================插播快捷键

    Ctrl+N 快速新建
    Ctrl+H 选中项目中搜索
    Ctrl+L 跳转到指定行
    Ctrl+F 在文本中查找内容

    ====================

    文件存储地址:

    this.getFilesDir(); // /data/data/包名/files
    this.getCacheDir(); // /data/data/包名/cache
    openFileOutput("aa.txt", 0); /data/data/包名/files/aa.txt
    context.getSharedPreferences("cuidemo", context.MODE_PRIVATE); /data/data/包名/shared_prefs/cuidemo.xml

     1 public class UtilsOfSharedPreferences {
     2     //保存信息到sd卡
     3     public static boolean saveUserInfo(Context context, String number,String pwd){
     4         try {
     5     sp=context.getSharedPreferences("cuidemo", context.MODE_PRIVATE);
     6             //获得一个编辑对象
     7             Editor edit = sp.edit();
     8             edit.putString("number", number);
     9             edit.putString("pwd", pwd);
    10             edit.commit();
    11             return true;
    12         } catch (Exception e) {
    13             // TODO Auto-generated catch block
    14             e.printStackTrace();
    15         }
    16         return false;
    17     }
    18     
    19     //返回信息
    20     public static Map<String,String> getUserInfo(Context context){
    21         SharedPreferences sp=context.getSharedPreferences("cuidemo", context.MODE_PRIVATE);
    22         String number=sp.getString("number", null);
    23         String pwd=sp.getString("pwd", null);
    24         
    25         if(!TextUtils.isEmpty(number)&& !TextUtils.isEmpty(pwd)){
    26             Map<String,String> userInfoMap=new HashMap<String,String>();
    27             userInfoMap.put("number", number);
    28             userInfoMap.put("pwd", pwd);
    29             return userInfoMap;
    30         }
    31         
    32         return null;
    33     }
    34 }
    View Code

    权限相关:
    1. 私有文件
    Context.MODE_PRIVATE
    2. 可读文件
    Context.MODE_WORLD_READABLE
    3. 可写文件
    Context.MODE_WORLD_WRITEABLE
    4. 可读可写文件.
    Context.MODE_WORLD_WRITEABLE+Context.MODE_WORLD_READABLE

    权限二进制图解:

  • 相关阅读:
    在线安装eclipse中html/jsp/xml editor插件 eclipseeditor
    webstorm 破解方式
    c# 下实现ping 命令操作
    Newtonsoft 序列化和反序列化特殊处理
    jquery 页面滚动到底部自动加载插件集合
    Bootstrap 模态对话框只加载一次 remote 数据的解决办法
    CSS文本溢出处理
    js 操作table
    Js 冒泡事件阻止
    WCF4.0 –- RESTful WCF Services
  • 原文地址:https://www.cnblogs.com/cuijl/p/4579752.html
Copyright © 2011-2022 走看看