Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 實例詳解Android文件存儲數據方式

實例詳解Android文件存儲數據方式

編輯:關於Android編程

總體的來講,數據存儲方式有三種:一個是文件,一個是數據庫,另一個則是網絡。下面通過本文給大家介紹Android文件存儲數據方式。

1.文件存儲數據使用了Java中的IO操作來進行文件的保存和讀取,只不過Android在Context類中封裝好了輸入流和輸出流的獲取方法。

創建的存儲文件保存在/data/data/<package name>/files文件夾下。

2.操作。

保存文件內容:通過Context.openFileOutput獲取輸出流,參數分別為文件名和存儲模式。
讀取文件內容:通過Context.openFileInput獲取輸入流,參數為文件名。
刪除文件:Context.deleteFile刪除指定的文件,參數為將要刪除的文件的名稱。
獲取文件名列表:通過Context.fileList獲取files目錄下的所有文件名數組。

*獲取文件路徑的方法:

絕對路徑:/data/data/<package name>/files/filename

Context:Context.getFilesDir()可以獲取到"/data/data/<package name>/files"

3.四種文件保存的模式。

Context.MODE_PRIVATE 為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下寫入的內容會覆蓋原文件的內容。

Context.MODE_APPEND 檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。
MODE_WORLD_READABLE 表示當前文件可以被其他應用讀取。
MODE_WORLD_WRITEABLE 表示當前文件可以被其他應用寫入。

在使用模式時,可以用"+"來選擇多種模式,比如openFileOutput(FILENAME, Context.MODE_PRIVATE + MODE_WORLD_READABLE);

下面通過程序來演示下文件存儲的使用。完整代碼下載:android_files.rar

/** 
* MainActivity 
* 
* @author zuolongsnail 
* 
*/ 
public class MainActivity extends Activity { 
private EditText writeET; 
private Button writeBtn; 
private TextView contentView; 
public static final String FILENAME = "setting.set"; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
writeET = (EditText) findViewById(R.id.write_et); 
writeBtn = (Button) findViewById(R.id.write_btn); 
contentView = (TextView) findViewById(R.id.contentview); 
writeBtn.setOnClickListener(new OperateOnClickListener()); 
} 
class OperateOnClickListener implements OnClickListener { 
@Override 
public void onClick(View v) { 
writeFiles(writeET.getText().toString()); 
contentView.setText(readFiles()); 
System.out.println(getFilesDir()); 
} 
} 
// 保存文件內容 
private void writeFiles(String content) { 
try { 
// 打開文件獲取輸出流,文件不存在則自動創建 
FileOutputStream fos = openFileOutput(FILENAME, 
Context.MODE_PRIVATE); 
fos.write(content.getBytes()); 
fos.close(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
} 
// 讀取文件內容 
private String readFiles() { 
String content = null; 
try { 
FileInputStream fis = openFileInput(FILENAME); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
byte[] buffer = new byte[1024]; 
int len = 0; 
while ((len = fis.read(buffer)) != -1) { 
baos.write(buffer, 0, len); 
} 
content = baos.toString(); 
fis.close(); 
baos.close(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
return content; 
} 
} 

程序截圖:

提供一個文件存儲數據的工具類:

/** 
* 文件存儲數據方式工具類 
* 
* @author zuolongsnail 
*/ 
public class FilesUtil { 
/** 
* 保存文件內容 
* 
* @param c 
* @param fileName 
* 文件名稱 
* @param content 
* 內容 
*/ 
private void writeFiles(Context c, String fileName, String content, int mode) 
throws Exception { 
// 打開文件獲取輸出流,文件不存在則自動創建 
FileOutputStream fos = c.openFileOutput(fileName, mode); 
fos.write(content.getBytes()); 
fos.close(); 
} 
/** 
* 讀取文件內容 
* 
* @param c 
* @param fileName 
* 文件名稱 
* @return 返回文件內容 
*/ 
private String readFiles(Context c, String fileName) throws Exception { 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
FileInputStream fis = c.openFileInput(fileName); 
byte[] buffer = new byte[1024]; 
int len = 0; 
while ((len = fis.read(buffer)) != -1) { 
baos.write(buffer, 0, len); 
} 
String content = baos.toString(); 
fis.close(); 
baos.close(); 
return content; 
} 
}

以上通過實例詳解Android文件存儲數據方式,希望對大家今後的工作學習有所幫助。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved