以下紀錄Android存取文件的方式,我們的目標為建立一個可以寫入檔案與並且把內容顯示在介面上的APP。
總共有9個物件,分別是3個Button、4個TextView與2個EditText,程式碼如下,須放在activity_main.xml
輸入帳號欄位 (TextView + EditText):
輸入密碼欄位 (TextView + EditText):
三個按鈕分別為:
顯示視窗:
主程式碼如下(MainActivity.java)
主要存取是使用 FileInputStream 與 FileOutputStream 搭配 BufferedInputStream 與 BufferedOutputStream
public class MainActivity extends AppCompatActivity {
private EditText account,pwd;
private TextView tv;
private Button add,clear,end;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
account = (EditText)findViewById(R.id.inputAccount);
pwd = (EditText)findViewById(R.id.inputPwd);
tv = (TextView)findViewById(R.id.show);
add = (Button)findViewById(R.id.addBtn);
clear = (Button)findViewById(R.id.clearBtn);
end = (Button)findViewById(R.id.endBtn);
add.setOnClickListener(listener);
clear.setOnClickListener(listener);
end.setOnClickListener(listener);
}
private Button.OnClickListener listener = new Button.OnClickListener(){
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.addBtn:
if(account.getText().toString().equals("")||pwd.getText().toString().equals("")){
Toast toast = Toast.makeText(getApplicationContext(),"請輸入帳號密碼",Toast.LENGTH_LONG);
break;
}
FileOutputStream file = null;
try {
file = openFileOutput("test.txt", MODE_APPEND);
BufferedOutputStream inputStream = new BufferedOutputStream(file);
inputStream.write(account.getText().toString().getBytes());
inputStream.write("\n".getBytes());
inputStream.write(pwd.getText().toString().getBytes());
inputStream.write("\n".getBytes());
inputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
readFile();
account.setText("");
pwd.setText("");
break;
case R.id.clearBtn:
try {
file = openFileOutput("test.txt", MODE_PRIVATE);
file.close();
}catch(Exception e){
e.printStackTrace();
}
readFile();
break;
case R.id.endBtn:
finish();
break;
}
}
};
private void readFile(){
FileInputStream file = null;
try {
file = openFileInput("test.txt");
BufferedInputStream inputStream = new BufferedInputStream(file);
byte [] str = new byte[20];
tv.setText("");
do {
int length = inputStream.read(str);
if(length==-1){
break;
} else {
tv.append(new String(str));
}
}while(true);
inputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
結果:
文章標籤
全站熱搜
