Android(安卓)文件的保存与读取之SDCard(SD卡)存储
16lz
2021-12-04
Android钟对数据的存储与访问是很有必要的,在Android中对于数据存储提供了如下几种方法:
文件形式
SharedPreferences(参数-键值对形式)
SQLite数据库(空间2T)
Content provider (Android组件-内容提供者)
网络(云存储)
现在我们主要写的是文件的保存与读取。
Android文件储存数据有两个地方:1、Android系统自带的存储空间,2、外部储存设备(SD等)
写的是第二种SDCard(SD卡)存储:
JAVA代码:
1、Activity类代码:
package com.example.administrator.foundationdemo.file;import android.os.Environment;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 { //判断SDCard是否存在并且可写 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ fileService.saveToSDCard(fileName,fileText); Toast.makeText(FileActivity.this,"保存成功",Toast.LENGTH_LONG).show(); }else { Toast.makeText(FileActivity.this,"SDCard不存在或不可写",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 android.os.Environment;import java.io.ByteArrayOutputStream;import java.io.File;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; } /**Android自带内存的文件储存 * * @param fileName 文件名称 文件类容 * @param fileText * @throws Exception */ 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(); } /**将文件存放在SDCard * 需要权限 * 在SDCard中创建与删除文件权限 * * 往SDCard写入数据权限 * * @param fileName 文件名称 * @param fileText 文件内容 * @throws Exception */ public void saveToSDCard(String fileName, String fileText) throws Exception{ //第一个参数方法为获取SDCard目录 File file = new File(Environment.getExternalStorageDirectory(),fileName); FileOutputStream outputStream = new FileOutputStream(file); outputStream.write(fileText.getBytes()); outputStream.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(安卓)DEV : setOnClickListener() vs. android:onClick
- 获取apk信息工具(android SDK的aapt工具)
- 开发可统计单词个数的Android驱动程序(1)
- Android(安卓)Layout布局文件里的android:layout_height等属性为
- Android(安卓)Studio 导入so
- Android(安卓)修改开机动画(bootanimation)
- android中下载文件到sdcard和进度条小结
- android中如何执行java命令
- Android(安卓)Layout布局文件里的android:layout_height等属性为