文件存儲不對存儲內容進行任何的格式化處理,全部數據都是原封不動保存到文件當中。java
Context類中提供了一個openFileOutput()方法,返回一個FileOutputStream對象,而後就能夠用javaI/O流去寫文件中了。文件都默認放在/data/data/
/files/目錄下。 android
public void save(String data){ FileOutputStream out=null; BufferedWriter writer=null; try{ out=openFileOutput("data", Context.MODE_PRIVATE);//第一個參數是文件的名稱,第二個參數是模式。MODE_PRIVATE表示覆蓋,MODE_APPEND表示追加。 writer=new BufferedWriter(new OutputStreamWriter(out)); writer.write(data); }catch (IOException e){ e.printStackTrace(); }finally { try { if(writer!=null) writer.close(); }catch (IOException e){ e.printStackTrace(); } } }
Context類還提供了一個openFileInput(),返回的是一個FileInputStream。它接收一個參數,即要讀取的文件名。而後系統會去/data/data/
/files/目錄下尋找。 app
public String load(String name){ FileInputStream input=null; BufferedReader reader=null; StringBuilder content=new StringBuilder(); try { input=openFileInput(name); reader=new BufferedReader(new InputStreamReader(input)); String line=""; while((line=reader.readLine())!=null){ content.append(line); } }catch (IOException e){ e.printStackTrace(); }finally { try { if(reader!=null) reader.close(); }catch (IOException e){ e.printStackTrace(); } } return content.toString(); }
SharedPreferences是使用鍵值對的方式來存儲數據的ide
1.獲取SharedPreferences對象佈局
此方法接收兩個參數,第一個參數用於指定SharedPreferences文件的名稱,若是直接的名稱文件不存在,則會建立一個文件,SharedPreferences文件都是存放在/data/data/
/shared_prefs/目錄下。第二個參數用於指定操做模式,目前只有MODE_WORLD_READABLE這一種模式可選,它是默認的操做模式,和直接傳入0效果是相同的,表示只有當前的應用才能夠對這個文件進行讀寫. ui
只接收一個操做模式參數,由於自動將當前活動的類名看成SharedPreferences的文件名this
這是一個靜態方法,它接收一個Context參數,並自動使用當前應用程序的包名做爲前綴來命名SharedPreferences文件。code
2.向SharedPreferences中存儲數據xml
(1)調用SharedPreferences對象的edit()方法來獲取一個SharedPreferences.Editor對象
(2)向SharedPreferences.Editor對象中添加數據,好比添加一個布爾型數據就使用putboolean()方法等
(3)調用apply()方法將添加的數據提交,從而完成數據存儲操做對象
1.獲取SharedPreferences對象
2.從SharedPreferences中讀取數據
直接使用SharedPreferences對象的getxxx(鍵,默認值)方法獲取對應類型值
1.新建LoginActivity活動
佈局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="60dp"> <TextView android:layout_width="90dp" android:layout_height="wrap_content" android:text="Account:" android:textSize="18dp" android:layout_gravity="center"/> <EditText android:id="@+id/account" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_gravity="center_vertical"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="60dp"> <TextView android:layout_width="90dp" android:layout_height="wrap_content" android:text="Password:" android:textSize="18dp" android:layout_gravity="center_vertical" /> <EditText android:id="@+id/password" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:inputType="textPassword" android:layout_gravity="center_vertical"/> </LinearLayout> <CheckBox android:id="@+id/remeber" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="remember password"/> <Button android:id="@+id/login" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Login"/> </LinearLayout>
LoginActivity類:
ublic class LoginActivity extends AppCompatActivity { private SharedPreferences sharedPreferences; private SharedPreferences.Editor editor; private EditText account; private EditText password; private CheckBox isRemeber; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); sharedPreferences= PreferenceManager.getDefaultSharedPreferences(this); account=(EditText)findViewById(R.id.account); password=(EditText)findViewById(R.id.password); isRemeber=(CheckBox)findViewById(R.id.remeber); if(sharedPreferences.getBoolean("isRemeber",false)){//以前記住過密碼 account.setText(sharedPreferences.getString("account","")); password.setText(sharedPreferences.getString("password","")); isRemeber.setChecked(true); } Button button=(Button)findViewById(R.id.login); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String accountstr=account.getText().toString(); String passwordstr=password.getText().toString(); if(accountstr.equals("admin")&&passwordstr.equals("123456")) { editor=sharedPreferences.edit(); if (isRemeber.isChecked()) {//選擇記住密碼 editor.putBoolean("isRemeber",true); editor.putString("account", accountstr);//保存帳戶 editor.putString("password", passwordstr);//保存密碼 }else{ editor.clear();//若是沒選中說明清空 } editor.apply();//運行 Intent intent=new Intent(LoginActivity.this,MainActivity.class); startActivity(intent); finish(); }else{ Toast.makeText(LoginActivity.this,"account or password is invald",Toast.LENGTH_SHORT).show(); } } }); } }