有沒有什么方法能在一個文件當中獲取兩組數據呢,
看完這個視頻自己做了個小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;
????}
}
2016-09-01
?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
2016-11-10
使用兩個文件保存
username.txt保存用戶名
password.txt保存密碼
2016-09-05
思想就是以#號為分隔符進行切片,代碼你自己調了,可以的,我之前寫過
2016-09-02
樓上的是對的