Android学习之文件存储方式

文件存储的几种方式

  • 存储在手机内部空间,路径是data/data/项目的包名
  • 存储在SDK中,路径有三个,现在的位置在storage/sdcard
  • 使用sharedpreferences进行文件的存储,路径是data/data/包名/shared_prefs

1.将文件保存在手机内部空间

public class MainActivity extends Activity{

    private EditText user;
    private EditText psw;
    private Button bt;
    private  FileOutputStream fos ;
    private FileInputStream fis;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        user = (EditText)findViewById(R.id.user1);
        psw = (EditText)findViewById(R.id.psw1);
        bt = (Button) findViewById(R.id.bt);

        //路径是data/data/包名
        final File file = new File(getFilesDir(),"test.txt");
        //读取数据
        if(file.exists()){
            try {
                fis = new FileInputStream(file);
                //把字节流转成字符流
                BufferedReader br = new BufferedReader(new InputStreamReader(fis));
                //读取文件
                String text = br.readLine();
                String[] s = text.split("##");
                user.setText(s[0]);
                psw.setText(s[1]);
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //写入数据
                try {
                    String usert = user.getText().toString();
                    String pswt = psw.getText().toString();
                    fos = new FileOutputStream(file);
                    fos.write((usert+"##"+pswt).getBytes());
                    fos.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

2.将文件保存在SDK中(要取得android权限)

public class MainActivity extends Activity{

    private EditText user;
    private EditText psw;
    private Button bt;
    private  FileOutputStream fos ;
    private FileInputStream fis;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        user = (EditText)findViewById(R.id.user1);
        psw = (EditText)findViewById(R.id.psw1);
        bt = (Button) findViewById(R.id.bt);

        //使用API获取sdcard路径
        final File file = new File(Environment.getExternalStorageDirectory(),"test.txt");
        //读取数据
        if(file.exists()){
            try {
                fis = new FileInputStream(file);
                //把字节流转成字符流
                BufferedReader br = new BufferedReader(new InputStreamReader(fis));
                //读取文件
                String text = br.readLine();
                String[] s = text.split("##");
                user.setText(s[0]);
                psw.setText(s[1]);
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //写入数据
                try {
                    String usert = user.getText().toString();
                    String pswt = psw.getText().toString();
                    fos = new FileOutputStream(file);
                    fos.write((usert+"##"+pswt).getBytes());
                    fos.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

3.以sharedpreferences方式存储数据

public class MainActivity extends Activity{

    private EditText user;
    private EditText psw;
    private Button bt;
    private SharedPreferences sharedPreferences;
    private SharedPreferences.Editor editer;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        user = (EditText)findViewById(R.id.user1);
        psw = (EditText)findViewById(R.id.psw1);
        bt = (Button) findViewById(R.id.bt);

        //使用私有的方式存储和读取数据
        sharedPreferences = getSharedPreferences("test", Context.MODE_PRIVATE);
        //使文件处于可编辑状态
        editer = sharedPreferences.edit();
        //读取数据
        user.setText(sharedPreferences.getString("user",""));
        psw.setText(sharedPreferences.getString("psw",""));
        //点击进行存储
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //写入数据
                editer.putString("user",user.getText().toString());
                editer.putString("psw",user.getText().toString());
                editer.commit();//进行保存操作
            }
        });
    }
}

通常sharedPreferences用来存储登录数据,但是这很不安全,需要进行一些相关的加密!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值