为了账号安全,请及时绑定邮箱和手机立即绑定

有没有什么方法能在一个文件当中获取两组数据呢,

看完这个视频自己做了个小demo发现获取是能获取到,但是数据被覆盖了,最后得到的只有密码的数据,

package com.example.nete.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private EditText usernameET;
    private EditText passwordET;
    private Button loginBT;
    private TextView nameTV;
    private TextView passTV;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化需要使用到的控件
        loginBT = (Button) findViewById(R.id.loginBT);
        passwordET = (EditText) findViewById(R.id.passwordET);
        usernameET = (EditText) findViewById(R.id.usernameET);
        nameTV = (TextView) findViewById(R.id.name);
        passTV = (TextView) findViewById(R.id.pass);
        loginBT.setOnClickListener(this);

    }

    @Override
    public void onClick(View view) {
        //最后获取输出框字符串
        WriteFile(usernameET.getText().toString());
        nameTV.setText("用户名:" + ReadFile());
        WriteFile(passwordET.getText().toString());
        passTV.setText("密 码:" + ReadFile());
    }


    public void WriteFile(String content) {
        FileOutputStream fos = null;
        try {
            fos = openFileOutput("login.txt", MODE_PRIVATE);
            fos.write(content.getBytes());//写入获得到的用户名密码
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public String ReadFile() {       
        FileInputStream fis = null;
        ByteArrayOutputStream baos = null;
        //新建局部变量用于保存读取到的数据
        String content = null;
        byte[] buffer = null;
        try {
            fis = openFileInput("login.txt");//获取文件输入流
            buffer = new byte[1000];//定义一次读取的字节数,不要太大
            baos = new ByteArrayOutputStream();//定义用于存放数据的写入内容
            int len = 0;
            //添加一个循环语句,当len==-1,就说明此时的数据已经读取完毕
            while ((len = fis.read(buffer)) != -1) {
                baos.write(buffer, 0, len);
            }
            content = baos.toString(); //将获取到的数据传到content
            fis.close();//关闭文件输入流
            baos.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return content;
    }


}


正在回答

4 回答

 public void WriteFile(String content) {

        FileOutputStream fos = null;

        try {

            fos = openFileOutput("login.txt", MODE_PRIVATE);

            fos.write(content.getBytes());//写入获得到的用户名密码

            fos.close();

        } catch (FileNotFoundException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

写入login.txt 文件后面的MODE_PRIVATE会将上一次写的数据覆盖,要添加MODE_APPEND

1 回复 有任何疑惑可以回复我~
#1

元素滴3579866 提问者

不行,那样会把之前的数据也读取出来
2016-09-02 回复 有任何疑惑可以回复我~
#2

qq_亮_4 回复 元素滴3579866 提问者

你想把数据怎么写到文件中?又想怎么读取怎样的数据?
2016-09-02 回复 有任何疑惑可以回复我~
#3

元素滴3579866 提问者 回复 qq_亮_4

显示密码是用户名+密码,不能单纯的得到密码,我是想得到用户名和密码单独的数据
2016-09-02 回复 有任何疑惑可以回复我~
#4

qq_亮_4 回复 元素滴3579866 提问者

显示的密码是用户+密码的话,你在用分割函数将他们分割,提取你要的密码
2016-09-02 回复 有任何疑惑可以回复我~
#5

qq_亮_4 回复 元素滴3579866 提问者

用分割函数分割提取密码
2016-09-02 回复 有任何疑惑可以回复我~
查看2条回复

使用两个文件保存

username.txt保存用户名

password.txt保存密码

0 回复 有任何疑惑可以回复我~

思想就是以#号为分隔符进行切片,代码你自己调了,可以的,我之前写过

0 回复 有任何疑惑可以回复我~
#1

元素滴3579866 提问者

恩恩,我再试试,谢谢
2016-09-05 回复 有任何疑惑可以回复我~

楼上的是对的

0 回复 有任何疑惑可以回复我~
#1

元素滴3579866 提问者

不行,那样会把之前的数据也读取出来,就是会显示密码是用户名+密码,不能单纯的得到密码
2016-09-02 回复 有任何疑惑可以回复我~
#2

ziom 回复 元素滴3579866 提问者

用sharedpreferences
2016-09-02 回复 有任何疑惑可以回复我~
#3

null_xj 回复 元素滴3579866 提问者

1.使用sharedpreferences 2.如果你非要用文件,那就要进行分割,比如 写的时候多写一个# 以此为分隔符,对读出的字符串用split进行切片即可
2016-09-05 回复 有任何疑惑可以回复我~
#4

元素滴3579866 提问者 回复 null_xj

sharedpreferences 我会用 ,分割还不会,之前用了split语句,结果都没显示出来
2016-09-05 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消
Android攻城狮的第二门课(第3季)
  • 参与学习       74912    人
  • 解答问题       420    个

手势识别、数据存储和4大组件,让你牢牢掌握之前的基础知识点

进入课程

有没有什么方法能在一个文件当中获取两组数据呢,

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信