Android 文件的保存与读取之自带储存空间
16lz
2021-01-23
Android钟对数据的存储与访问是很有必要的,在Android中对于数据存储提供了如下几种方法:
- 文件形式
- SharedPreferences(参数-键值对形式)
- SQLite数据库(空间2T)
- Content provider (Android组件-内容提供者)
- 网络(云存储)
现在我们主要写的是文件的保存与读取。
Android文件储存数据有两个地方:1、Android系统自带的存储空间,2、外部储存设备(SD等)
我先写的是第一种自带储存空间:
JAVA代码:
1、Activity类代码:
package com.example.administrator.foundationdemo.file;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;import com.example.administrator.foundationdemo.R;public class FileActivity extends AppCompatActivity { private EditText file_name_edittext; private EditText file_text_edittext; private Button file_writing_button; private Button file_read_button; private TextView file_read_text; FileService fileService; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_file); file_name_edittext = (EditText) findViewById(R.id.file_name_edittext); file_text_edittext = (EditText) findViewById(R.id.file_text_edittext); file_writing_button = (Button) findViewById(R.id.file_writing_button); file_read_button = (Button) findViewById(R.id.file_read_button); file_read_text = (TextView) findViewById(R.id.file_read_text); fileService = new FileService(FileActivity.this); //数据保存按钮 file_writing_button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String fileName = file_name_edittext.getText().toString(); String fileText = file_text_edittext.getText().toString(); try { fileService.writing(fileName,fileText); Toast.makeText(FileActivity.this,"保存成功",Toast.LENGTH_LONG).show(); } catch (Exception e) { Toast.makeText(FileActivity.this,"保存失败",Toast.LENGTH_LONG).show(); e.printStackTrace(); } } }); //数据读取按钮 file_read_button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String fileName = file_name_edittext.getText().toString(); try { file_read_text.setText(fileService.read(fileName)); } catch (Exception e) { e.printStackTrace(); } } }); }}
FileService类代码:
package com.example.administrator.foundationdemo.file;import android.content.Context;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;/** * Created by Administrator on 2016/11/30. */public class FileService { Context context; public FileService(){ } public FileService(Context context){ this.context = context; } public void writing(String fileName, String fileText) throws Exception{ //默认保存路径../data/date/package name/file目录下 //Android还提供了两种方法getCacheDir()和getFilesDir()方法: //getCacheDir()方法用于获取/data/data//cache目录 //getFilesDir()方法用于获取/data/data//file目录 //openFileOutput(Sting ,int) 快速获取一个输出流,Sting==>文件名称,int操作模式(可看源码信息) //Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被该应用访问,在该模式下,写入的内容会覆盖源文件的内容; //Context.MODE_APPEND:为追加操作模式,代表该文件是私有的,只能够被该应用访问,在该模式下,写入的内容追加在源文件内容的后面; ////还有一种追加方式为FileoutputStream中的两个参数(String name,boolean append)其中第二个参数决定是否以追加的模式来写入内容; //Context.MODE_READABLE:表示当前文件能被其他应用读取; // Context.MODE_WRITEABLE:表示当前文件能被其他应用写入; FileOutputStream fileOutputStream = context.openFileOutput(fileName,Context.MODE_PRIVATE); fileOutputStream.write(fileText.getBytes()); fileOutputStream.close(); } public String read(String fileName) throws Exception{ //默认读取路径../data/date/package name/file目录下 FileInputStream fileInputStream = context.openFileInput(fileName); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = fileInputStream.read(buffer)) != -1){ outputStream.write(buffer,0,len); } return new String(outputStream.toByteArray()); }}
XML代码:
<?xml version="1.0" encoding="utf-8"?>
效果图:
这里写图片描述希望对你们有帮助!!
更多相关文章
- Android布局文件的属性值解析
- android读取keystore证书文件
- Android NFS文件系统挂载遇到的问题解决方法
- Android解析服务器端发来的xml数据示例
- Android 应用程序中使用 Internet 数据(XML、JSON 和 protocol bu
- android小功能实现之xml文件解析(Pull)