日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

内部存储文件(读)

發(fā)布時間:2025/3/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 内部存储文件(读) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

未進(jìn)行優(yōu)化的代碼:

實現(xiàn)功能要點:

? 1. 當(dāng)輸入用戶密碼后點擊登錄時,首先判斷是否勾選了復(fù)選框,若勾選了,將用戶名、密碼通過文件寫的方法寫入到內(nèi)部存儲info.txt中。

? 2. 當(dāng)應(yīng)用啟動后,執(zhí)行函數(shù)readAccount()函數(shù),該函數(shù)通過文件讀方法(只獲取一行)并將該行字符串分割后顯示在用戶名和密碼框中。

代碼如下:

package com.swust.intern;import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader;import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//應(yīng)用啟動后,讀取存檔的用戶名和密碼 readAccount();}public void readAccount(){File file =new File("data/data/com.swust.intern/info.txt");try{FileInputStream fis =new FileInputStream(file);//把字節(jié)流轉(zhuǎn)化為字符流BufferedReader br =new BufferedReader(new InputStreamReader(fis));//讀取txt文件的用戶名和密碼//讀取一行String text =br.readLine();//使用“##”標(biāo)識切割,得到字符串?dāng)?shù)組String[] s = text.split("##");EditText et_name = (EditText) findViewById(R.id.et_name);EditText et_pwd = (EditText) findViewById(R.id.et_pwd);et_name.setText(s[0]);et_pwd.setText(s[1]);}catch (Exception e){e.printStackTrace();}}public void login(View v){EditText et_name = (EditText) findViewById(R.id.et_name);EditText et_pwd = (EditText) findViewById(R.id.et_pwd);CheckBox cb = (CheckBox)findViewById(R.id.cb);String name=et_name.getText().toString();String pwd =et_pwd.getText().toString();//判讀復(fù)選框是否被勾選if(cb.isChecked()){//"data/data/com.swust.intern"是內(nèi)部存儲空間路徑File file =new File("data/data/com.swust.intern/info.txt");FileOutputStream fos;try{fos = new FileOutputStream(file);//加“##”是為了讀取時好分割fos.write((name + "##" +pwd).getBytes());fos.close();}catch (Exception e){e.printStackTrace();}}//System.out.println("登陸成功");//創(chuàng)建吐司對話框/* 第一個參數(shù)上context,而activity本來就是context的子類,所以直接填this*//*第三個參數(shù)為持續(xù)顯示時間,只有LENGTH_SHORT(2S)和LENGTH_LONG(5s)兩種選擇*//*Toast t= Toast.makeText(this, "登陸成功", Toast.LENGTH_SHORT);//顯示吐司對話框t.show();*/Toast.makeText(this, "登陸成功", Toast.LENGTH_SHORT).show();} }

當(dāng)然,有缺點:

第一,代碼不夠優(yōu)化,findById方法實現(xiàn)多次,應(yīng)該使用全局變量來解決。

第二,邏輯漏洞,1.當(dāng)該應(yīng)用第一次啟動時,是無法讀取賬號密碼的

? ? ? ? ? ? ? ? ? ? ? 2.當(dāng)用戶在之后的某一次不選擇記住賬戶名和密碼,那么應(yīng)該將txt文件清空,而不是之前的舊賬號密碼

優(yōu)化解決(代碼優(yōu)化和第一次啟動判斷文件存在):

package com.swust.intern;import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader;import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast;public class MainActivity extends Activity {private EditText et_name;private EditText et_pwd;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//已經(jīng)是全局變量,應(yīng)用啟動時獲取IDet_name = (EditText) findViewById(R.id.et_name);et_pwd = (EditText) findViewById(R.id.et_pwd);//應(yīng)用啟動后,讀取存檔的用戶名和密碼 readAccount();}public void readAccount(){File file =new File("data/data/com.swust.intern/info.txt");
      

//判讀文件是否存在
if(file.exists()){
try{
FileInputStream fis =new FileInputStream(file);
//把字節(jié)流轉(zhuǎn)化為字符流
BufferedReader br =new BufferedReader(new InputStreamReader(fis));
//讀取txt文件的用戶名和密碼
//讀取一行
String text =br.readLine();
//使用“##”標(biāo)識切割,得到字符串?dāng)?shù)組
String[] s = text.split("##");


et_name.setText(s[0]);
et_pwd.setText(s[1]);

}catch (Exception e){
e.printStackTrace();
}
}

?   }public void login(View v){CheckBox cb = (CheckBox)findViewById(R.id.cb); String name=et_name.getText().toString(); //直接使用String pwd =et_pwd.getText().toString();//判讀復(fù)選框是否被勾選if(cb.isChecked()){//"data/data/com.swust.intern"是內(nèi)部存儲空間路徑File file =new File("data/data/com.swust.intern/info.txt");FileOutputStream fos;try{fos = new FileOutputStream(file);//加“##”是為了讀取時好分割fos.write((name + "##" +pwd).getBytes());fos.close();}catch (Exception e){e.printStackTrace();}}//System.out.println("登陸成功");//創(chuàng)建吐司對話框/* 第一個參數(shù)上context,而activity本來就是context的子類,所以直接填this*//*第三個參數(shù)為持續(xù)顯示時間,只有LENGTH_SHORT(2S)和LENGTH_LONG(5s)兩種選擇*//*Toast t= Toast.makeText(this, "登陸成功", Toast.LENGTH_SHORT);//顯示吐司對話框t.show();*/Toast.makeText(this, "登陸成功", Toast.LENGTH_SHORT).show();} }

?

轉(zhuǎn)載于:https://www.cnblogs.com/shuqingstudy/p/4876798.html

總結(jié)

以上是生活随笔為你收集整理的内部存储文件(读)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。