大家好。這是我的項目。由於我是Java編程的初學者,我嘗試使用不同類型的存儲,現在是內部存儲。我有一個接受用戶名和密碼的屏幕,保存時會保存一個文本文件david.txt。我進入第二個屏幕推送負載,信息從文本文件中提取並填充用戶名和密碼。內部存儲項目
這是主要活動
public static final String TAG = "MainActivity";
EditText userName, password;
//... standard stuff
userName = (EditText) findViewById(R.id.userName);
password = (EditText) findViewById(R.id.password);
}
public void save (View view)
{
String text1 = userName.getText().toString(); // example: David
String text2 = password.getText().toString(); // Example: Vilma123
File file=null;
text1=text1+" "; // Adds space between username and password
FileOutputStream fileOutputStream=null;
try {
file=getFilesDir(); //Gets directory of stored file
fileOutputStream = openFileOutput("david", Context.MODE_PRIVATE);
fileOutputStream.write(text1.getBytes());
fileOutputStream.write(text2.getBytes());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
Log.d(TAG, e.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
Log.d(TAG, e.toString());
}
finally{
try {
fileOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
Log.d(TAG, e.toString());
}
}
Toast.makeText(this, "Saved successfully"+file+" /david.txt", Toast.LENGTH_LONG).show();
}
代碼這個偉大工程,是我推「轉到B」按鈕,激活了SecondActivity頁面中的「負荷」的方法在屏幕上:見下文
EditText userName, password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
userName = (EditText) findViewById(R.id.editText2);
password = (EditText) findViewById(R.id.editText4);
}
public void load (View view)
{
Log.d("david", "starting fileInputStream");
try {
FileInputStream fileInputStream = openFileInput("david.txt");
int read = -1; //-1 indicates file is empty
StringBuffer buffer = new StringBuffer();
while ((read = fileInputStream.read())!=-1);
{
buffer.append((char)read);
}
Log.d("david", buffer.toString());
String user = buffer.substring(0, buffer.indexOf(""));
String pass = buffer.substring(buffer.indexOf("")+1);
userName.setText(user);
password.setText(pass);
fileInputStream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(this, "Load successful", Toast.LENGTH_SHORT).show();
}
好的,這是它開心的地方。當我按下Load按鈕時,它應該加載我在最後一個屏幕中輸入的用戶名和密碼,但它沒有加載。 此日誌文件有一個0值
Log.d("david", buffer.toString());
而其.txt文件中有我放在信息。有人能幫我解決這個問題嗎?我沒有顯示任何錯誤,所有Toasts都應該顯示。
文件是昂貴的過程,使用偏好android有一種叫做偏好小機制數據存儲的機制 – Sush
你可以以加密形式存儲共享偏好的用戶名和密碼,這樣任何人都無法讀取它。 –
@sush請解釋你的想法,我瞭解什麼狀態存儲在共享首選項狀態,然後回顧。所以最後有代碼保存數據到一個確定的地方,並訪問數據使用共享首選項 – user3324600