package com.qianfeng.gp08_day24_internalstorage;

 import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays; import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText; /**
* 内部存储: SharedPreferences属于内部存储
* openFileOutput() openFileInput()
* 其实还是以文件的形式存储数据,IO
* /shared_prefs/
* 内部存储的文件的存放位置 /data/data/(包名)/files/
*
*/
public class MainActivity extends Activity { private EditText edit_fileName,edit_content; //点击菜单项,弹出对话框,列出所有的内部存储空间中的文件
private AlertDialog fileDialog;
private ArrayAdapter<String> adapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); edit_fileName = (EditText) findViewById(R.id.edit_fileName);
edit_content = (EditText) findViewById(R.id.edit_fileContent); initDialog();
} //初始化对话框的功能
public void initDialog()
{
adapter = new ArrayAdapter<String>(this,R.layout.item_layout);
//得到内部存储空间中的所有的文件名 fileList()
adapter.addAll(Arrays.asList(fileList())); fileDialog = new AlertDialog.Builder(this)
.setTitle("文件选择对话框")
.setIcon(R.drawable.ic_launcher)
.setAdapter(adapter, new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
//得到文件名
String filename = adapter.getItem(which);
edit_fileName.setText(filename);
// 读取文件
try {
readData(null);
} catch (IOException e) {
e.printStackTrace();
}
}
})
.create(); } public void saveFile(View v) throws IOException//把数据保存到内部存储空间的文件中
{
//获取文件名和文件内容
String filename = edit_fileName.getText().toString().trim();
String filecontent = edit_content.getText().toString().trim(); FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE);
fos.write(filecontent.getBytes()); fos.close();
} public void readData(View v) throws IOException
{
//获取被读取的文件名
String filename = edit_fileName.getText().toString().trim(); //读取文件
FileInputStream fis = openFileInput(filename);
byte[] arr = new byte[fis.available()];
int len = fis.read(arr);
edit_content.setText(new String(arr,0,len));
fis.close();
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId()==R.id.action_selectFile)
{
fileDialog.show();
}
return super.onOptionsItemSelected(item);
} }

MainActivity

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" > <EditText
android:id="@+id/edit_fileName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="输入文件名" /> <Button
android:id="@+id/btn_open"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="readData"
android:layout_toRightOf="@id/edit_fileName"
android:text="打开" /> <Button
android:id="@+id/btn_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/btn_open"
android:onClick="saveFile"
android:text="保存" />
<EditText
android:id="@+id/edit_fileContent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/btn_save"
android:background="@android:drawable/edit_text"
android:hint="文件内容" /> </RelativeLayout>

activity_main

 <?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="#000"
/>

item——layout

内部存储 openFileInputStream openFileOutputStream的更多相关文章

  1. 彻底了解android中的内部存储与外部存储

    我们先来考虑这样一个问题: 打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的 ...

  2. Android用路径api在内部存储读写文件

    复制并修改原有项目 复制之前创建的项目CC+CV操作 需要改动的地方: * 项目名字 * 应用包名 * R文件重新导包 接着修改件/AndroidManifest.xml中的包名:package=&q ...

  3. Android 在内部存储读写文件

    文件读写操作* Ram内存:运行内存,相当于电脑的内存* Rom内存:内部存储空间,相当于电脑的硬盘* sd卡:外部存储空间,相当于电脑的移动硬盘在内部存储空间中读写文件>小案例:用户输入账号密 ...

  4. Android 内部存储和外部存储

    应用程序的一些配置文件需要存储在手机上.一般分为内部存储和SD卡存储. 一. 内部存储 ,以 FileOutputStream File file = new File(getFilesDir(),& ...

  5. 大过年的,不下班的,上个Android文件操作类(内部存储和sd卡均可)

    package com.kkdiangame.UI.res; import java.io.ByteArrayOutputStream; import java.io.File; import jav ...

  6. (转)Android如何编程设置APP安装位置(外部存储或内部存储)?

    Beginning with API Level 8, you can allow your application to be installed on the external storage ( ...

  7. Android--数据持久化之内部存储、Sdcard存储

    前言 之前一直在讲AndroidUI的内容,但是还没有完结,之后会慢慢补充.今天讲讲其他的,关于数据持久化的内容.对于一个应用程序而言,不可避免的要能够对数据进行存储,Android程序也不例外.而在 ...

  8. Android中将Bitmap对象以PNG格式保存在内部存储中

    在Android中进行图像处理的任务时,有时我们希望将处理后的结果以图像文件的格式保存在内部存储空间中,本文以此为目的,介绍将Bitmap对象的数据以PNG格式保存下来的方法. 1.添加权限 由于是对 ...

  9. 彻底理解android中的内部存储与外部存储

    我们先来考虑这样一个问题: 打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的 ...

随机推荐

  1. Spark Standalone模式HA环境搭建

    Spark Standalone模式常见的HA部署方式有两种:基于文件系统的HA和基于ZK的HA 本篇只介绍基于ZK的HA环境搭建: $SPARK_HOME/conf/spark-env.sh 添加S ...

  2. 学习MongoDB 四: MongoDB查询(一)

    一.简介 MongoDB提供了db.collection.find() 方法可以实现根据条件查询和指定使用投影运算符返回的字段省略此参数返回匹配文档中的所有字段. 二.db.collection.fi ...

  3. 开发组件:ZeroMQ

    ZeroMQ https://blog.csdn.net/w174504744/article/details/73187697

  4. 洛谷::P1972 [SDOI2009]HH的项链

    题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链 ...

  5. CSS3基础

    内容: 1.圆角 border-radius 2.阴影 text-shadow.box-shadow 3.渐变 linear.radial 4.rgba rgb+alpha opacity 5.tra ...

  6. 0_Simple__UnifiedMemoryStreams

    使用 OpenMP 和 pthreads 两种环境,利用实现统一内存编址,计算基本的矩阵乘法 result = α * A * x + β * result . ▶ 源代码 #include < ...

  7. vmware桥接模式无法上网

    环境:本机win10系统,ip地址固定,(估计存在vlan网络), 状况:vmware的nat模式可以上网,桥接模式不能上网, 解决办法:找网管把本机设置成dhcp模式,才行了

  8. Elasticsearch究竟要设置多少分片数?

    0.引言 本文翻译自Elasticsearch20170918热乎的官方博客,原作者:Christian Dahlqvist. 在构建Elasticsearch集群的初期如果集群分片设置不合理,可能在 ...

  9. rabbitMQ 的基本知识

    参考:  https://www.cnblogs.com/dwlsxj/p/RabbitMQ.html

  10. JS 操作 file标签只上传照片

    在当前高版本浏览器里 在标签里加这个属性就够用了 accept="image/*" $('input[type="file"]').live('change', ...