android 之数据存储(IO)
16lz
2021-01-26
android 操作文件分为两种,
第一种:直接写到手机内存中,手机内存有限。
第二种:写到手机的内存卡(SD)中,进行操作文件。
以下分为两种情况的读精心操作,一个简单的demo.在此做一个记录。
代码。
package com.hkrt.action;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.io.RandomAccessFile;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class IOtestActivity extends Activity {public EditText edit; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); edit = (EditText)this.findViewById(R.id.inputEdit); Button read = (Button)this.findViewById(R.id.read); Button write = (Button)this.findViewById(R.id.write); write.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//write(edit.getText().toString());writeDB(edit.getText().toString());Toast.makeText(IOtestActivity.this, "写入成功", 0).show();} }); read.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//String str=read();String str=readSD();if(str!=null){Toast.makeText(IOtestActivity.this, "获取到的值:"+str, 0).show();}}}); } /**从手机内存中读取*/private String read() {StringBuffer sb = null;try {FileInputStream fis = openFileInput("info");byte[] buff = new byte[8192];int hasread = 0;sb = new StringBuffer();while ((hasread = fis.read(buff)) > 0) {sb.append(new String(buff, 0, hasread));}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return sb.toString();} /**写到手机内存中*/private void write(String content) {FileOutputStream fos = null;try {fos = openFileOutput("info", Context.MODE_APPEND);PrintStream ps = new PrintStream(fos);ps.print(content);} catch (FileNotFoundException e) {e.printStackTrace();} finally {if (fos != null) {try {fos.close();} catch (IOException e) {e.printStackTrace();}}}}/**从sd卡中取内容*/private String readSD(){FileInputStream fis=null;StringBuffer sb = new StringBuffer("");//检测是否有sd卡,有没有对sd卡进行读写的权限if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){File sdCardDir = Environment.getExternalStorageDirectory();//获取到文件的存储位置try {fis= new FileInputStream(new File(sdCardDir.getCanonicalFile()+"/info2"));BufferedReader br = new BufferedReader(new InputStreamReader(fis));String str=null;while((str=br.readLine())!=null){sb.append(str);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{if(fis!=null){try {fis.close();} catch (IOException e) {e.printStackTrace();}}}}return sb.toString();}/**把内容写到SD卡中*/private void writeDB(String str){RandomAccessFile random =null;if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){try {File sdCardDir = Environment.getExternalStorageDirectory();//获取到文件的存储位置File targetFile= new File(sdCardDir+"/info2");random= new RandomAccessFile(targetFile, "rw"); random.seek(targetFile.length());random.write(str.getBytes());} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{if(random!=null){try {random.close();} catch (IOException e) {e.printStackTrace();}}}}}}
效果图:
SD
更多相关文章
- Android修改XML文件
- android学习笔记1:HelloWorld
- Android(安卓)Video简述
- android Q 使用 ACTION_OPEN_DOCUMENT_TREE 选择目录进行遍历文
- 使用Visual Studio 2015开发Android(安卓)程序
- unix like系统的android反编译工具
- Android中读取文本文件中内容的方法
- Android(安卓)开发 使用wifi连接adb
- 二、PocketSphinx-Android编译与运行