在數據存儲一、二、三中主要了解到了在android項目中把數據保存到SQLite數據庫中。在數據存儲四來了解在android項目中把數據保存到文件中,首先來了解兩個方法:
1、openFileOutput(String name,int mode)name:文件的名稱,不能包含分隔符“/”,如果文件不能保存在,Android會自動創建它。創建的文件保存在/data/data/<package_name>/files目錄下。
2、openFileInput(String name)。
在openFIleOutput方法裏面的保存的模式mode:
.MODE_APPEND 如果文件中已經存在內容,則在內容末尾追加
.MODE_PRIVATE 文件僅能被該程序訪問
.MODE_WORLD_PEADABLE 文件允許被其它應用程序讀
.MODE_WORLD_WRITEABLE 文件應許被其它程序寫
MODE_WORLD_READABLE + MODE_WORLD_WRITEABLE
下面是一個代碼實例:
MainActivity.java代碼:
package com.cooguo.file.activity;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import com.cooguo.file.service.FileService;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button btnSave = null;
private Button btnRead = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnSave = (Button)findViewById(R.id.btnSave);
btnRead = (Button)findViewById(R.id.btnRead);
btnSave.setOnClickListener(listener);
btnRead.setOnClickListener(listener);
}
private OnClickListener listener = new OnClickListener(){
@Override
public void onClick(View view) {
FileService service = new FileService();
EditText editTitle = (EditText)findViewById(R.id.fileEditTitle);
EditText editContent = (EditText)findViewById(R.id.fileEditContent);
TextView textResult = (TextView)findViewById(R.id.textResult);
switch (view.getId()) {
case R.id.btnSave:
try {
OutputStream outStream = MainActivity.this.openFileOutput(editTitle.getText().toString(),Context.MODE_PRIVATE);
service.save(outStream, editContent.getText().toString());
Toast.makeText(MainActivity.this, "保存成功!", Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
}
break;
case R.id.btnRead:
try {
InputStream inputStream = MainActivity.this.openFileInput(editTitle.getText().toString());
String content = service.read(inputStream);
textResult.setText(content);
} catch (IOException e) {
e.printStackTrace();
}
break;
}
}
};
}
FileService.java代碼:
package com.cooguo.file.service;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileService {
/**
* 保存
* @param outStream
* @param content
* @throws IOException
*/
public void save(OutputStream outStream ,String content) throws IOException{
outStream.write(content.getBytes());
outStream.close();
}
public String read(InputStream inputStream) throws IOException{
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len=inputStream.read(buffer))!=-1) {
outputStream.write(buffer, 0, len);
}
byte[] data = outputStream.toByteArray();
outputStream.close();
inputStream.close();
return new String(data);
}
}
main.xml配置文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/fileTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/fileEditTitle"
android:text="文件名:"
/>
<EditText
android:id="@+id/fileEditTitle"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/fileTitle"
android:text="kaifa.txt"
/>
<TextView
android:id="@+id/fileContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/fileEditContent"
android:text="內容:"
/>
<EditText
android:layout_width="250dp"
android:layout_height="250dp"
android:id="@+id/fileEditContent"
android:layout_below="@+id/fileEditTitle"
android:layout_alignLeft="@+id/fileEditTitle">
</EditText>
<Button
android:id="@+id/btnSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="保存"
android:layout_below="@+id/fileEditContent"
android:layout_toRightOf="@+id/fileTitle"
/>
<Button
android:id="@+id/btnRead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="讀取"
android:layout_below="@+id/fileEditContent"
android:layout_toRightOf="@+id/btnSave"
android:layout_marginLeft="14dp"
/>
<TextView
android:text="顯示內容"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textResult"
android:layout_below="@+id/btnRead"
android:layout_alignRight="@+id/btnRead"
android:layout_marginTop="14dp"/>
</RelativeLayout>
用心體會,學以致用。