android数据存储之File
android中使用File进行存储主要使用到OpenFileOutput和OpenFileInput两个方法,下面直接用一个例子来说明一下。
(1)布局文件main.xml文件
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TableRow > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="文件名:" android:textSize="20sp"/> <EditText android:id="@+id/name" android:layout_width="200dp" android:layout_height="wrap_content" android:text="" /> </TableRow> <TableRow > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="内容:" android:textSize="20sp"/> <EditText android:id="@+id/content" android:layout_width="200dp" android:layout_height="100dp" android:text="" /> </TableRow> <Button android:id="@+id/save" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="保存" android:textSize="20sp" /> <Button android:id="@+id/read" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="读取" android:textSize="20sp" /> <!-- 用于显示存储在File中的数据 --> <TextView android:id="@+id/result" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:textSize="20sp"/> </TableLayout>
(2)service方法
package com.yby.file;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileService {
//文件的保存
public void save(OutputStream outstream,String content) throws IOException{
outstream.write(content.getBytes());
outstream.close();
}
//文件的读取
public String read(InputStream inputstream) throws IOException{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len ;
while((len=inputstream.read(buffer))!=-1){
baos.write(buffer,0,len);
}
byte[] data = baos.toByteArray();
baos.close();
inputstream.close();
return new String(data);
}
}
(3)activity代码实现
package com.yby.file; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.OutputStream; 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 EditText name,content; private Button save,read; private TextView result; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.main); name = (EditText) findViewById(R.id.name); content = (EditText) findViewById(R.id.content); save = (Button) findViewById(R.id.save); read = (Button) findViewById(R.id.read); result = (TextView) findViewById(R.id.result); save.setOnClickListener(listener); read.setOnClickListener(listener); } private OnClickListener listener = new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.save: try { // Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND // Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。 // Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。 // MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。 // 如果希望文件被其他应用读和写,可以传入: // openFileOutput("output.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE); OutputStream outstream = MainActivity.this.openFileOutput(name.getText().toString(), Context.MODE_APPEND); FileService service = new FileService(); service.save(outstream, content.getText().toString()); Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); } break; case R.id.read: try { InputStream instream = MainActivity.this.openFileInput(name.getText().toString()); FileService service = new FileService(); String str = service.read(instream); result.setText(str); } catch (Exception e) { e.printStackTrace(); } break; default: break; } } }; }
(4)使用shell命令查看写入的文件内容
成功根本没有什么秘诀可言,如果真是有的话,就是两个:第一个就是坚持到底,永不放弃;第二个是当你想放弃的时候,回过头来看看第一个秘诀:坚持到底,永不放弃