snifer

【原创】Android编程之读取静态文件

0
阅读(2730)

非常抱歉各位童鞋,由于电脑格式化,因此android课程要继续后延了,有一些朋友问我如何读取静态文件,我就把这个问题跟大家分享一下。

要打开打包在应用程序中的静态文件,使用Resources.openRawResource(R.raw.mydatafile)

我的文件是存放在如下位置的,记得该文件必须放在文件夹res/raw/中。

代码及说明:

InputStreamin = this.getResources().openRawResource(R.raw.my);
… //获得Context资源
in.close();//关闭输入流
文件存取示例
创建添加文件内容并保存,打开文件并显示内容
① 新建工程FileWriteRead
② 修改main.xml 布局,添加一个EditText、一个Button

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/EditText_Txt"
android:layout_height="350px"
android:layout_width="fill_parent">
</EditText>
<Button
android:layout_height="wrap_content"
android:id="@+id/Button_Save"
android:text="保存"
android:layout_width="80px">
</Button>
</LinearLayout>

③ 在res/layout 中新建一个open.xml 布局文件,添加一个TextView、两个Button("打开","清空")
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/EditText_Txt"
android:layout_height="350px"
android:layout_width="fill_parent">
</EditText>
<Button
android:layout_height="wrap_content"
android:id="@+id/Button_Save"
android:text="保存"
android:layout_width="80px">
</Button>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/openlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android" >
<TextView
android:id="@+id/TextView_showTxt"
android:layout_width="314px"
android:layout_height="373px"
android:layout_x="3px"
android:layout_y="3px">
</TextView>
<Button
android:id="@+id/Button_openTxt"
android:layout_width="80px"
android:layout_height="wrap_content"
android:text="打开"
android:layout_x="2px"
android:layout_y="378px">
</Button>
<Button
android:id="@+id/Button_clean"
android:layout_width="80px"
android:layout_height="wrap_content"
android:text="清空"
android:layout_x="239px"
android:layout_y="378px">
</Button>
</AbsoluteLayout>
④ 文件存储

/*定义IO对象*/
private String Text_of_input;
private OutputStream os;
Text_of_input = inputArt.getText().toString();
//得到用户输入字符
try {
os = this.openFileOutput("txtME", MODE_PRIVATE);
//打开一个文件输出流。名称为txtME,模式为不覆盖
os.write(Text_of_input.getBytes());
//把内容写入文件
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
} finally {
try {
//关闭文件输出流
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
}
}

⑤ 文件读取
android:layout_width="80px"
android:layout_height="wrap_content"
android:text="打开"
android:layout_x="2px"
android:layout_y="378px">
</Button>
<Button
android:id="@+id/Button_clean"
android:layout_width="80px"
android:layout_height="wrap_content"
android:text="清空"
android:layout_x="239px"
android:layout_y="378px">
</Button>
</AbsoluteLayout>
/*定义IO对象*/
private String Text_of_input;
private OutputStream os;
Text_of_input = inputArt.getText().toString();
//得到用户输入字符
try {
os = this.openFileOutput("txtME", MODE_PRIVATE);
//打开一个文件输出流。名称为txtME,模式为不覆盖
os.write(Text_of_input.getBytes());
//把内容写入文件
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
} finally {
try {
//关闭文件输出流
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
/*定义IO对象*/
private String Text_of_output;
private InputStream is;

⑥ 修改mianActivity.java 文件,添加menu 菜单与操作
private byte[] b;
try {
//打开一个文件输入流。名称为txtME
is = this.openFileInput("txtME");
//字节数组声明定义
b = new byte[1024];
//读取文件内容放入字节数组
int length = is.read(b);
//把字节数组转换成字符串
Text_of_output = new String(b);
//显示读取内容长度
setTitle("文件字数:" + length);
//显示读取的文件内容
showmyText.setText(Text_of_output);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}finally {
try {
//关闭文件输入流
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
⑦ 结果