close
以下紀錄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(); } } }
結果:
全站熱搜