600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Android文件存储与读取(手机内存 SD卡)

Android文件存储与读取(手机内存 SD卡)

时间:2024-04-13 22:04:03

相关推荐

Android文件存储与读取(手机内存 SD卡)

1.activity_main.xml文件中

<!-- 保存数据到手机内存中 --><Buttonandroid:id="@+id/btnSave"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@+id/etContent"android:layout_centerHorizontal="true"android:text="保存" android:onClick="save"/><!-- 要保存的数据 --><EditTextandroid:id="@+id/etContent"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/btnSave"android:layout_alignParentRight="true"android:layout_alignParentTop="true"android:layout_marginTop="16dp"android:ems="10" ><requestFocus /></EditText><!-- 将信息写入到sd卡中 --><Buttonandroid:id="@+id/btnSaveTosdcard"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignRight="@+id/tvContent"android:layout_below="@+id/btnLoad"android:layout_marginTop="37dp"android:onClick="saveTosdcard"android:text="保存到SD卡" /><!-- 读取信息输入到tvContent中 --><Buttonandroid:id="@+id/btnLoad"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/btnSave"android:layout_marginTop="19dp"android:layout_toLeftOf="@+id/tvContent"android:text="载入"android:onClick="load" /><TextViewandroid:id="@+id/tvContent"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/btnLoad"android:layout_alignBottom="@+id/btnLoad"android:layout_marginLeft="30dp"android:layout_toRightOf="@+id/btnSave"android:text="" /><!-- 从SD卡中读取数据显示到tvsdcard文本中 --><Buttonandroid:id="@+id/btnloadFromSdcard"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/btnSaveTosdcard"android:layout_below="@+id/btnSaveTosdcard"android:layout_marginTop="35dp"android:text="从sd卡中读取信息" android:onClick="loadFromSdcard"/><TextViewandroid:id="@+id/tvsdcard"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/btnloadFromSdcard"android:layout_alignBottom="@+id/btnloadFromSdcard"android:layout_toRightOf="@+id/btnloadFromSdcard"android:text="" />

2.MainActivity活动

package com.t20.fileop;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import android.os.Bundle;import android.app.Activity;import android.content.Context;import android.view.View;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {private EditText meEditTextContent;private TextView tvContent;private TextView mTextViewSdcard;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取到相应的控件meEditTextContent = (EditText) findViewById(R.id.etContent);tvContent = (TextView) findViewById(R.id.tvContent);mTextViewSdcard = (TextView) findViewById(R.id.tvsdcard);}/*** 保存文件到手机内存中* * @param v*/public void save(View v) {// 文件输出流FileOutputStream out = null;// 缓冲写入器BufferedWriter writer = null;// 要写入的数据String str = meEditTextContent.getText().toString();try {// 用于将数据保存到指定的文件中,// 第一个参数是文件名,第二个参数是文件的操作模式// Context.MODE_PRIVATE写入的内容会覆盖原文件中的内容// Context.MODE_APPEND如果文件已经存在,就往文件中追加内容,不存在就创建文件out = openFileOutput("data.txt", Context.MODE_PRIVATE);writer = new BufferedWriter(new OutputStreamWriter(out));// 往外写数据writer.write(str);Toast.makeText(MainActivity.this, "保存成功!", Toast.LENGTH_SHORT).show();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {// 关闭流writer.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}/*** 载入文件信息* * @param v*/public void load(View v) {FileInputStream in = null;BufferedReader reader = null;StringBuilder builder = new StringBuilder();try {// 读取指定文件的信息in = openFileInput("data.txt");reader = new BufferedReader(new InputStreamReader(in));String line = "";// 将读到的数据赋值给line,当line不为空的时候进行追加while ((line = reader.readLine()) != null) {builder.append(line);}// 将读取到的信息在文本中进行输出tvContent.setText(builder.toString());} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if (reader != null) {try {// 关闭输入流reader.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}/*** 将信息写入到sd卡中 * 读写sd卡需要权限,在AndroidManifest.xml中设置android.permission.WRITE_EXTERNAL_STORAGE* * @param v*/public void saveTosdcard(View v) {//文件输出流FileOutputStream fos = null;//要写入的数据String str = meEditTextContent.getText().toString();//设置文件路径 ,第一个参数是文件保存的路径,null放在根目录下,第二个参数是文件名File file = new File(getExternalFilesDir(null), "/data.txt");try {fos = new FileOutputStream(file);fos.write(str.getBytes());Toast.makeText(MainActivity.this, "保存到SD卡成功!", Toast.LENGTH_SHORT).show();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if (fos != null) {try {// 关闭输入流fos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}/*** 从sd卡中读取信息进行显示 * 也需要权限,但在写入的时候已经给了权限,读取的时不需要分配权限* 需要设置时在AndroidManifest.xml中设置android.permission.READ_EXTERNAL_STORAGE* @param v*/public void loadFromSdcard(View v) {//设置文件路径,第一个参数是文件保存的路径,null放在根目录下,第二个参数是文件名File file = new File(getExternalFilesDir(null), "/data.txt");//文件输入流InputStream is = null;try {is = new FileInputStream(file);//使用缓冲来读byte[] buf = new byte[1024];// 每次读取1K的数据StringBuilder sb = new StringBuilder();// 当还存在数据的时候就一直读取while (is.read(buf) != -1) {sb.append(new String(buf).trim());}//将数据输入到文本中显示mTextViewSdcard.setText(sb.toString());} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if (is != null) {try {// 关闭输入流is.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。