基础知识系列之 内部存储 Android

作者:程序员Android / 公众号:ProgramAndroid 发布时间:2018-12-15



极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能

Android 可以直接保存文件到内部存储,保存在内部存储的文件是应用的私有文件,其他应用无法访问,当app被卸载时候,文件也会被删除掉。内部存储经常以文件的形式保存。
通过本章将了解Android 内部存储相关的知识点如下:
1. 内部存储的保存路径2. 内部存储的(保存,读取)使用方法3. 内部存储的Demo4. 内部存储的其他方法1. 内部存储的保存路径
/data/data/com.**包名/files/文件名2. 内部存储的(保存,读取)使用方法
保存文件的方法
1.使用文件名称和操作模式调用 openFileOutput()。 这将返回一个 FileOutputStream。2.使用 write() 写入到文件。3.使用 close() 关闭流式传输。
例如:
// 打开一个用来读写的文件,该文件与当前上下文所在的包相关,调用该方法不需要添加任何全选, // 保存在手机内部存储中 try {// 打开输出流,并创建文件FileOutputStream fos = openFileOutput(strfilename, MODE_PRIVATE);// 输入的内容保存到文件中fos.write(str.getBytes());fos.close(); } catch (IOException e) {e.printStackTrace(); }
读取 File 内容的方法
调用 openFileInput() 并向其传递要读取的文件名称。 这将返回一个 FileInputStream。
使用 read() 读取文件字节。
然后使用 close() 关闭流式传输。例如:
try {// 打开文件得到一个只读的输入流,FileInputStream fis = openFileInput(filename);// 将文件内容存放的byte数组中byte[] buffer = new byte[fis.available()];// 读取数组中的内容fis.read(buffer);fis.close();// 将数组内容存放到字符串中,并显示出来etcontent.setText(new String(buffer)); } catch (Exception e) {e.printStackTrace(); }
3.删除文件的方法
String filename; deleteFile(filename);3. 内部存储的Demo
实现效果如下:实现文件的保存、读取、删除功能

内部存储使用Demo
实现代码如下:
public class FileMethods extends Activity implements OnClickListener { private EditText etname, etcontent; private Button savebtn, openbtn, deletebtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_file); InitView(); } private void InitView() { etname = (EditText) findViewById(R.id.editfilename); etcontent = (EditText) findViewById(R.id.edit_filecontext); savebtn = (Button) findViewById(R.id.savefile); openbtn = (Button) findViewById(R.id.openfile); deletebtn = (Button) findViewById(R.id.deletefile); savebtn.setOnClickListener(this); openbtn.setOnClickListener(this); deletebtn.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.savefile:SaveFile();break; case R.id.openfile:OpenFile();break; case R.id.deletefile:DeleteFile();break; default:break; } } // 保存文件方法 private void SaveFile() { String filename = etname.getText().toString().trim(); String filecontent = etcontent.getText().toString().trim(); if (TextUtils.isEmpty(filename) || TextUtils.isEmpty(filecontent)) {Toast.makeText(getApplicationContext(), "文件名不能为空", Toast.LENGTH_LONG).show();return; } // 打开一个用来读写的文件,该文件与当前上下文所在的包相关,调用该方法不需要添加任何全选, // 保存在手机内部存储中 try {// 打开输出流,并创建文件FileOutputStream fos = openFileOutput(filename, MODE_PRIVATE);// 输入的内容保存到文件中fos.write(filecontent.getBytes());fos.close(); } catch (IOException e) {e.printStackTrace(); } Toast.makeText(getApplicationContext(), "保存成功", Toast.LENGTH_LONG) .show(); etname.setText(""); etcontent.setText(""); } // 打开文件方法 private void OpenFile() { String filename = etname.getText().toString().trim(); if (TextUtils.isEmpty(filename)) {Toast.makeText(getApplicationContext(), "文件名不能为空", Toast.LENGTH_LONG).show();return; } try {// 打开文件得到一个只读的输入流,FileInputStream fis = openFileInput(filename);// 将文件内容存放的byte数组中byte[] buffer = new byte[fis.available()];// 读取数组中的内容fis.read(buffer);fis.close();// 将数组内容存放到字符串中,并显示出来etcontent.setText(new String(buffer)); } catch (Exception e) {e.printStackTrace(); } } // 删除文件方法 private void DeleteFile() { String filename = etname.getText().toString().trim(); if (TextUtils.isEmpty(filename)) {Toast.makeText(getApplicationContext(), "文件名不能为空", Toast.LENGTH_LONG).show();return; } // 删除上下文中指定名称的文件, boolean deletefile = deleteFile(filename); if (deletefile) {Toast.makeText(getApplicationContext(), "删除成功", Toast.LENGTH_LONG) .show(); } }}
实现布局 如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <EditTextandroid:id="@+id/editfilename"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_weight="1"android:background="@android:drawable/edit_text"android:hint="请输入文件名"android:padding="5dp"android:textSize="20sp" /> <Buttonandroid:id="@+id/savefile"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_marginLeft="5dp"android:padding="5dp"android:text="保存"android:textSize="25sp" /> <Buttonandroid:id="@+id/openfile"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_marginLeft="5dp"android:padding="5dp"android:text="打开"android:textSize="25sp" /> </LinearLayout> <Button android:id="@+id/deletefile" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:padding="5dp" android:text="删除文件" android:textSize="25sp" /> <EditText android:id="@+id/edit_filecontext" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:background="@android:drawable/edit_text" android:gravity="left" android:hint="请输入文件内容" android:padding="5dp" android:textSize="20sp" /></LinearLayout>4. 内部存储的其他方法
获取在其中存储内部文件的文件系统目录的绝对路径。
getFilesDir()
在您的内部存储空间内创建(或打开现有的)目录。
getDir()
返回您的应用当前保存的一系列文件。
fileList()
至此内部存储的使用方法已经基本完成


至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。
既然都看到这里,领两个红包在走吧!以下两个红包每天都可以领取
1.支付宝搜索522398497,或扫码支付宝红包海报。

支付宝扫一扫,每天领取大红包
2.微信红包,微信扫一扫即可领取红包

微信扫一扫,每天领取微信红包

关注程序员Android微信公众号,获取更多图文精彩内容


其他栏目