android中IO操作數據總結

package com.ghg.IO;


import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;


import android.app.Activity;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.os.Environment;
import android.os.FileObserver;


public class Day1404_IOActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        /*
         * 1.創建並返回一個目錄,在這個目錄下存儲應用程序的數據文件
         * 輸出結果爲: getFilesDir():/data/data/com.ghg.IO/files
         */
	       File dir= getFilesDir();
	       System.out.println("getFilesDir():"+dir.toString());
        /*
         * 2.創建並返回一個目錄,在這個目錄下存儲應用程序的緩衝文件,當系統資源不足時,系統清除這下面的文件
         * 輸出結果爲:dir2=/data/data/com.ghg.IO/cache
         */
	       File dir2=getCacheDir();
	       System.out.println("dir2="+dir2.toString());
       /*
        * 3.創建並返回一個指定名稱的目錄,在這個目錄下來存些東西
        * 輸出結果爲:dir3=/data/data/com.ghg.IO/app_abc
        */
	       File dir3=getDir("abc", MODE_PRIVATE);
	       System.out.println("dir3="+dir3.toString());
        /*
         * 4.用於返回數據庫中指定名字的文件路徑,在內部存儲中應該保存的路徑;
         * 輸出結果爲:dir4=/data/data/com.ghg.IO/databases/stu.db
         */
	       File dir4=getDatabasePath("stu.db");
	       System.out.println("dir4="+dir4.toString());
       /*
        * 5.打開一個輸出流對象,通過這個輸出流對象可以向abc.txt文件中寫入一些數據,
        * abc.txt文件位於/data/data/com.ghg.IO/files下;
        */
	       try {
			FileOutputStream  out=openFileOutput("abc.txt", MODE_PRIVATE);
			out.write("gao hong guo jiajia".getBytes());
			out.flush();
			out.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	     
        /*
         * 6.獲取一個輸入流對象,通過這個輸入流對對象讀取指定文件,這個文件在/data/data/com.ghg.IO/files下;
         */
	        
	      try {
			FileInputStream is=openFileInput("abc.txt");
			ByteArrayOutputStream out=new ByteArrayOutputStream();
			int len=0;
			byte[] buf=new byte[4];
			while((len=is.read(buf))>0){
				out.write(buf, 0, len);
				out.flush();
			}
			out.close();
			is.close();
			System.out.println(out.toString());
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	     
        /*
         *7. 獲取內部存儲的數據目錄
         * 輸出結果是:dir7=/data
         */
       File dir7=Environment.getDataDirectory();
       System.out.println("dir7="+dir7.toString());
        /*
         * 8.獲取內部存儲下載緩衝目錄,隱藏的目錄;
         * 輸出結果爲:dir8=/cache
         */
	       File dir8=Environment.getDownloadCacheDirectory();
	       System.out.println("dir8="+dir8.toString());
        /*
         * 9.獲取內部下載系統的根目錄
         * 輸出結果爲:dir9=/system
         */
	       File dir9= Environment.getRootDirectory();
	       System.out.println("dir9="+dir9.toString());
       /*
        * 10.創建並返回外部存儲文件目錄,需要sd卡的的寫入數據權限;
        * 輸出結果是:dir10=/mnt/sdcard/Android/data/com.ghg.IO/files/Music


        */
	       File dir10=getExternalFilesDir(Environment.DIRECTORY_MUSIC);
	       System.out.println("dir10="+dir10.toString());
       /*
        * 11.創建並返回外部存儲緩衝目錄,需要sd卡的寫入數據權限;
        * 輸出結果是:dir11=/mnt/sdcard/Android/data/com.ghg.IO/cache
        */
	      File dir11= getExternalCacheDir();
	      System.out.println("dir11="+dir11.toString());
	      /*
	       * 12.返回sdcard的根目錄;
	       * 結果: dir12=/mnt/sdcard
	       */
	      File dir12=Environment.getExternalStorageDirectory();
	      System.out.println("dir12="+dir12.toString());
	      /*
	       * 13.返回sdcard公共存儲目錄;
	       * 結果:dir13=/mnt/sdcard/Music
	       */
		      File dir13=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
		      System.out.println("dir13="+dir13.toString());
	      /*
	       * 14.返回sdcard的狀態,每次使用sdcard時,都會檢查其狀態;
	       * 結果:status=mounted
	       */
		      String status=Environment.getExternalStorageState();
		      System.out.println("status="+status);
	      
	     /*
	      * 15.對源生資源的訪問,在assets下放一個stu.db,讀取並寫入內部存儲數據文件目錄下;
	      */
	      File dir1=getDatabasePath("stu.db");
	      if (!dir1.exists()) {
			if (!dir1.getParentFile().exists()) {
				dir1.getParentFile().mkdir();
			}
			
			AssetManager manager=getAssets();
			try {
				InputStream in=manager.open("stu.db");
				FileOutputStream out=new FileOutputStream(dir1);
				int len=0;
				byte[] buf=new byte[512];
				while ((len=in.read(buf))>0){
					out.write(buf, 0, len);
					out.flush();
				}
				in.close();
				out.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	      
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章