編輯:關於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文件存儲數據方式,希望對大家今後的工作學習有所幫助。
Android學習筆記之Menu一級菜單、二級菜單的使用
(1)布局文件沒有做更改 (2)在res--menu目錄下的main.xml文件中代碼如下:
Android基礎部分再學習---activity的生命周期
關於activity的生命周期:要知道的知識點1.每個生命活動執行的順序、2.每個生命周期我們應該做怎麼樣的處理:每個方法保留的時間有多久;那個方法是活動阻塞的,他沒有做
小米手環怎麼設置來電震動 小米手環來電震動設置教程
小米手環怎麼設置來電震動?小米手環上市開始就受到廣大用戶的青睐,不僅功能使用,價格還很公道,下面小編為大家帶來小米手環來電震動設置方法。小米手環設置來電震動
怎麼下載微信中的視頻
微信的訂閱號有很多很搞笑的視頻我們怎麼下載下來?朋友圈裡鏈接的視頻非常珍貴如何保存?相信大家都很想知道吧,下面讓我來給大家介紹怎麼下載微信中的視頻的方法吧。