【Android】“存储”之普通文件存储(内部存储空间)
Android是基于java语言的,在java中提供了一套完整的输入输出流操作,与文件相关的有FileInputStream和FileOutputStream等,通过这些类可以方便访问磁盘上的文件内容。通用Android也支持这种方式来访问手机上 的文件。我们直到Android手机中的文件可以存储在内部存储空间和外部SD卡(如果有的话),现在将记录内部存储空间这种情况下的文件存储。
两个方法
Android中文件的读取操作主要是同过Context类来完成的,该类提供了两个方法来打开本应用程序的数据文件夹里的文件IO流。
(1)openFileInput(String name):打开App数据文件夹(data)下name文件对应的输入流。
(2)openFileOutput(String name,int mode):打开应用程序的数据文件夹下的name文件对应输出流。name参数用于指定文件名称,不能包含路径分隔符“\”,如果文件不存在,Android会自动创建,mode参数用于指定操作模式,Context类中定义了四种操作模式常量分别是:
(1)Context.MODE_PRIVATE = 0:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容。
(2)Context.MODE_APPEND = 32768:模式检查文件是否存在,存在就在文件中追加内容,否则创建新文件再写入内容。
(3)Context.MODE_WORLD_READABLE = 1:表示当前文件可以被其他应用读取。
(4):Context.MODE_WORLD_WRITEABLE = 2:表示当前文件可以被其他应用写入。
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical"> <EditText android:id="@+id/ET_write" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="输入想存入文件的内容"/> <Button android:id="@+id/BT_write" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="写入内容"/> <EditText android:id="@+id/ET_read" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" android:hint="显示读取的内容"/> <Button android:id="@+id/BT_read" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="读取内容"/>LinearLayout>
(不同为什么自己截的图会莫名其妙打上水印还有奇怪的qq_31718279是什么东西)
package com.file.file;import android.content.Context;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintStream;public class MainActivity extends AppCompatActivity { private Button bt_write,bt_read; private EditText et_write,et_read;// 设置保存的文件名称 private String fileName = "content.txt"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt_read = (Button)findViewById(R.id.BT_read); bt_write = (Button)findViewById(R.id.BT_write); et_read = (EditText)findViewById(R.id.ET_read); et_write = (EditText)findViewById(R.id.ET_write); bt_read.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {// 将读取的内容显示在 EditText 控件上 et_read.setText(read()); } }); bt_write.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {// 将 EditText 上的内容写入文本 write(et_write.getText().toString()); } }); } private void write(String s) { try{ FileOutputStream fos = openFileOutput(fileName, Context.MODE_APPEND); PrintStream ps = new PrintStream(fos); ps.print(s); ps.close(); fos.close(); } catch (Exception e) { e.printStackTrace(); } } private String read() { StringBuilder sbBuilder = new StringBuilder(""); try{ FileInputStream is = openFileInput(fileName);// 定义缓冲区 byte[] buffer = new byte[64];// 记录每次读取的字节数 int hasRead; while ((hasRead = is.read(buffer))!= -1){ sbBuilder.append(new String(buffer,0,hasRead)); } } catch (Exception e){ e.printStackTrace(); } return sbBuilder.toString(); }}
更多相关文章
- Android通过加载其他应用的Dex文件破解关键数据
- android中javah生成jni头文件报错问题
- 双击运行Android模拟器、创建SDcard、AVD、安装APK文件、上传文
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操
- Android 应用程序窗体显示状态操作(requestWindowFeature()的应用
- Android 文件操作心得体会
- 海康威视视频监控demo 源码+库文件
- android操作sim卡联系人信息