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();
}
}
}
}
android中IO操作數據總結
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.