android数据存储之File

时间:2023-03-10 07:06:19
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命令查看写入的文件内容

android数据存储之File

android数据存储之File