Day01

還剩兩個月,時間不多,決定這段時間每天都做一下總結,把每天的新知識點都歸納起來.

Android下的數據讀寫

Android中輸入輸出

  1. 從文件里面讀取數據
  2. 把數據寫到文件

android下應用程序的路徑和javase不同,應用程序的路徑要保存在自己的文件夾里面.

getFileDir();獲取自己的文件夾/data/data/包名/files

getCacheDir();獲取自己的文件夾/data/data/包名/cache

Android給我們提供了兩種應用程序的目錄:

  1. files目錄存放重要的應用程序數據,手機不會自動清理files目錄中的文件
  2. cache目錄是存放臨時的不重要的數據,這個目錄有個特點,當手機內存空間不足時,會自動清理cache中目錄的文件

手機存儲空間的劃分

  • 手機的內部存儲(訪問手機內部存儲空間方法:Environment.getDataDirectory();)

    1. file目錄
    2. cache目錄
  • 手機的外部存儲(訪問手機外部存儲空間方法:Environment.getExternalStorageDirectory();)

登錄界面模擬代碼

  public void onCreat(Bundle savedInstanceState){
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      EditText text = (EditText) findViewById(R.id.Text);
      EditText textpassword = (EditText) findViewById(R.id.TextPassword);
      CheckBox  cb = (CheckBox) findViewById(R.id.checkBox);
      readinfo();
}

public void onCick(View v){
    int i=0;
    //獲取賬戶并復制給一個字符串
    String text = text.getText().toString.trim();
    String password = text.getText().toString.trim();
    //假如用戶輸入為空我們就先做一個判斷并提醒用戶沒有輸入
    //TextUtils.isEmpty(text)=="".equals(text):此方法就是判斷是否為空字符串,為空就返回
    if(TextUtils.isEmpty(text))||TextUtils.isEmpty(password)){
        Toast.makeText(this,"請輸入用戶名及密碼",Toast.LENGTH_LONG).show();
     }else {
            //判斷是否需要記錄用戶名與密碼
            //cb.isChecked():此方法判斷選項框是否被選中
            if (cb.isChecked()) {//被選中狀態,需要記錄用戶名和密碼
                //創建一個文件,并取一個名字
                try {
                File file = new File("/data/data/com.example.Test04_store/info.txt");
                //寫數據需要一個文件輸出流,并把創建的文件傳入流中
                //因為是在Android中,所以這個地方要寫入android中的全路徑才能執行
                FileOutputStream fos = new FileOutputStream(file);
                //然后把賬戶名與命名拼接到一個數據中,方便存儲:100000##123456String 
                info = Text + "##" + password;
                //然后把封裝后的數據寫入到文件中
                fos.write(info.getBytes());
                //關閉流
                fos.close();
                } catch (IOException e) {            
                     e.printStackTrace();        
                }   
             }    
            //判斷登錄密碼正確還是錯誤    
            if ("100000".equals(qq) && "123456".equals(password)) {        
                 Toast.makeText(this, "send true", Toast.LENGTH_LONG).show();    
            } else {        
                Toast.makeText(this, "send false", Toast.LENGTH_LONG).show();    
            }
      }  
}

// 根據原來的保存的數據取出來,并顯示在界面中
public void readinfo(){    
  //得到這個文件    
  File file = new File("/data/data/com.example.Test04_store/info.txt");    
  //判斷這個文件是否存在,是否有數據    
  if(file.exists()&&file.length()>0){        
      try {            
          FileInputStream fis = new FileInputStream(file);            
          //這時我們只讀一行,用BufferedReader包裝一下            
          BufferedReader br = new BufferedReader(new InputStreamReader(fis));            
          String info = br.readLine();            
          //下面得到一個數組,數組第一個元素為帳戶名,第二個元素為密碼            
          String qq = info.split("##")[0];            
          String password = info.split("##")[1];            
          //把帳戶名和密碼回顯到界面中            
          text.setText(qq);            t
          extpassword.setText(password);        
      } catch (IOException e) {            
          e.printStackTrace();       
      }    
  }
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,335評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,937評論 18 139
  • ¥開啟¥ 【iAPP實現進入界面執行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,523評論 0 17
  • 人體線稿 給人體線稿穿上衣服 線稿描邊,擦干凈多余的鉛筆線條 用彩鉛上色。今天皮膚的顏色過重了。 完成。
    模模的世界閱讀 160評論 0 0
  • 首頁投稿,說實話,以前寫過的東西,我覺得沒有一篇是能拿的出手的。那些我自己看著都覺得病怏怏的文字,怎么敢拿出來讓大...
    339606bdbf73閱讀 233評論 0 0