001 Android TextUtils工具类的使用

1.采用File类,在指定目录下读写数据

java后台代码为:

(1)向app的/data/data/com.example.lucky.helloworld目录下写入文本(涉及IO的读写操作)

package com.example.lucky.helloworld;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class UserInfoUtils {
    public static boolean saveInfo(String username,String password){
        String result=username+"=="+password;
        //创建File类,指定数据存储位置
        File file=new File("/data/data/com.example.lucky.helloworld/info.txt");
        try {
            //创建一个文件的输出流
            FileOutputStream fos=new FileOutputStream(file);
            fos.write(result.getBytes()); //向文件中写入数据
            fos.close();  //关闭文件
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    //读取用户信息
    public static Map<String,String> readInfo(){
        //定义map
        Map<String,String> map=new HashMap<>();
        File file=new File("/data/data/com.example.lucky.helloworld/info.txt");
        try {
            FileInputStream fis=new FileInputStream(file);
            BufferedReader br=new BufferedReader(new InputStreamReader(fis));
            String strTemp=br.readLine();  //读取数据
            String[] splitstr=strTemp.split("=="); //对字符串进行切割
            String username=splitstr[0];
            String password=splitstr[1];
            map.put("name",username);  //将数据放入map集合中
            map.put("pw",password);
            fis.close(); //关闭数据流
            return map;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

(2)MainActivity.java代码

package com.example.lucky.helloworld;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.util.Map;

public class MainActivity extends AppCompatActivity {
    EditText et_username;
    EditText et_password;
    Button bt_login;

    //当Activityq启动时就会执行onCreate方法
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //设置activity的内容,内容来自布局文件activity_main.xml
        setContentView(R.layout.activity_main);
        Log.v("001","我是verbose级别");
        Log.i("001","我是info级别");
        Log.d("001","我是debug级别");
        Log.w("001","我是warn级别");
        Log.e("001","我是error级别");
        System.out.println("sout输出");
        et_username=findViewById(R.id.et_username);
        et_password=findViewById(R.id.et_password);
        bt_login=findViewById(R.id.bt_login);

        //读取/data/data/com.example.lucky.helloworld/info.txt文件
        Map<String,String> map=UserInfoUtils.readInfo();
        if(map!=null){
            String name=map.get("name");
            String password=map.get("pw");
            et_username.setText(name);  //将读取的数据显示出来
        }


        bt_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String username=et_username.getText().toString();
                String password=et_password.getText().toString();
                //安卓特有的工具类,用来判断string是否为空
                if(TextUtils.isEmpty(username)||TextUtils.isEmpty(password)){
                    Toast.makeText(MainActivity.this,"用户名不能为空",Toast.LENGTH_SHORT).show();
                }else {
                    boolean result=UserInfoUtils.saveInfo(username,password);
                    if(result){
                        Toast.makeText(MainActivity.this,"数据存储成功",Toast.LENGTH_SHORT).show();
                    }else {
                        Toast.makeText(MainActivity.this,"数据存储失败",Toast.LENGTH_SHORT).show();
                    }
                }
            }
        });
    }
}

 2.利用Context类获取常用目录,存储文件(推荐使用)

文件数据保存的模式:

1)MODE_PRIVATE ,这个模式用得最多,其他的模式很少用

2)MODE_APPEND

3)MODE_WORLD_READABLE

4)MODE_WORLD_WRITEABLE

(1)读写工具类

package com.example.lucky.helloworld;

import android.content.Context;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class UserInfoUtils {
    public static boolean saveInfo(Context context, String username, String password){
        String result=username+"=="+password;

        try {
            //创建一个文件的输出流,使用上下文获取常用目录
            FileOutputStream fos=context.openFileOutput("info2.txt",Context.MODE_PRIVATE);
            fos.write(result.getBytes()); //向文件中写入数据
            fos.close();  //关闭文件
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    //读取用户信息
    public static Map<String,String> readInfo(Context context){
        //定义map
        Map<String,String> map=new HashMap<>();
        try {
            FileInputStream fis=context.openFileInput("info2.txt");
            BufferedReader br=new BufferedReader(new InputStreamReader(fis));
            String strTemp=br.readLine();  //读取数据
            String[] splitstr=strTemp.split("=="); //对字符串进行切割
            String username=splitstr[0];
            String password=splitstr[1];
            map.put("name",username);  //将数据放入map集合中
            map.put("pw",password);
            fis.close(); //关闭数据流
            return map;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

(2)MainActivity.class

package com.example.lucky.helloworld;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Map;

public class MainActivity extends AppCompatActivity {
    EditText et_username;
    EditText et_password;
    Button bt_login;
    Button bt_private;
    Button bt_append;
    Button bt_readable;
    Button bt_writeable;

    //当Activityq启动时就会执行onCreate方法
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //设置activity的内容,内容来自布局文件activity_main.xml
        setContentView(R.layout.activity_main);
        init();

        //info2.txt文件
        Map<String,String> map=UserInfoUtils.readInfo(MainActivity.this);
        if(map!=null){
            String name=map.get("name");
            String password=map.get("pw");
            et_username.setText(name);  //将读取的数据显示出来
        }

        bt_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String username=et_username.getText().toString();
                String password=et_password.getText().toString();
                //安卓特有的工具类,用来判断string是否为空
                if(TextUtils.isEmpty(username)||TextUtils.isEmpty(password)){
                    Toast.makeText(MainActivity.this,"用户名不能为空",Toast.LENGTH_SHORT).show();
                }else {
                    boolean result=UserInfoUtils.saveInfo(MainActivity.this,username,password);
                    if(result){
                        Toast.makeText(MainActivity.this,"数据存储成功",Toast.LENGTH_SHORT).show();
                    }else {
                        Toast.makeText(MainActivity.this,"数据存储失败",Toast.LENGTH_SHORT).show();
                    }
                }
            }
        });

        //在data/data/com.example.lucky.helloworld下创建files文件夹,生成属性为private的文件
        bt_private.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    FileOutputStream fos=openFileOutput("private.txt",MODE_PRIVATE); //创建private.txt
                    fos.write("private".getBytes());  //写入数据
                    fos.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

        //在data/data/com.example.lucky.helloworld下创建files文件夹,生成属性为append(可追加内容)的文件
        bt_append.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    FileOutputStream fos=openFileOutput("append.txt",MODE_APPEND);
                    fos.write("append".getBytes());
                    fos.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

        //在data/data/com.example.lucky.helloworld下创建files文件夹,生成属性为MODE_WORLD_READABLE的文件,只读模式
        bt_readable.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    FileOutputStream fos=openFileOutput("readable.txt",MODE_WORLD_READABLE);
                    fos.write("readable".getBytes());
                    fos.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

        bt_writeable.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    FileOutputStream fos=openFileOutput("writeable.txt",MODE_WORLD_WRITEABLE);
                    fos.write("writeable".getBytes());
                    fos.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    private void init() {
        et_username=findViewById(R.id.et_username);
        et_password=findViewById(R.id.et_password);
        bt_login=findViewById(R.id.bt_login);
        bt_private=findViewById(R.id.bt_private);
        bt_append=findViewById(R.id.bt_append);
        bt_readable=findViewById(R.id.bt_readable);
        bt_writeable=findViewById(R.id.bt_writeable);
    }
}
原文地址:https://www.cnblogs.com/luckyplj/p/10610810.html