標籤:void 建立 extend isp 擷取 images code mode span
Saving File
android讀寫檔案的形式和普通的java IO的方式並沒有什麼不同,唯一有所限制的是當我們建立檔案的時候不能夠在像javaSE那樣隨意了。一般android讀寫檔案有兩種形式:
1 File file = new File(context.getFilesDir(), filename);
2 FileOutputStream outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
強烈推薦使用第一種方式,因為在第一種方式的情況下我們可以使用許多進階點的檔案讀寫方法,這樣不說能提高效率,但是能夠減少錯誤機率。
代碼:
public class MainActivity extends Activity { TextView view; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_layout); view=(TextView) findViewById(R.id.textView1); Button write=(Button) findViewById(R.id.button1); write.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub view.setText(getFilesDir().toString()); String filename = "myfile"; String string = "Hello world!"; FileOutputStream outputStream; try { outputStream = openFileOutput(filename, Context.MODE_APPEND); PrintWriter pw=new PrintWriter(outputStream); pw.println(string); pw.close(); if(outputStream!=null)outputStream.close(); } catch (Exception e) { e.printStackTrace(); } } }); Button read=(Button) findViewById(R.id.button2); read.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub String filename="myfile"; try { BufferedReader reader=new BufferedReader(new FileReader(new File(getFilesDir(), filename))); String res=""; res=reader.readLine(); view.setText(res); reader.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); }}View Code
注意:android中記憶體和外存的讀寫沒有什麼不同,記憶體擷取目錄使用getFileDir(),而外存用:getExternalStoragePublicDirectory()用於在外存公用部分儲存檔案
getExternalFilesDir()用於儲存個人檔案的時候使用。
此外:
getExternalStorageState() 查詢外部儲存狀態;
getFreeSpace() 或 getTotalSpace()查出是否有足夠的可用空間;
getCacheDir() 定期建立的所有快取檔案。
Android Saving Data(二)