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. Eclipse里面的Maven项目如果下载依赖的jar包的源码

    Window---------Properties---------------Maven--------------勾选Download Artifact Sources和Download Arti ...

  2. JedisCluster模式尝试进行批量操作

    搭建完redis集群后,可以通过jedis的JedisCluster来访问Redis集群,这里列出使用jedisCluster的spring bean配置方式:   <bean id=" ...

  3. javascript创建对象之动态原型模式(五)

    function Human(name, sex) { this.name = name; this.sex = sex; if (typeof this.say != "function& ...

  4. css position小结

    relative:可使top,right,bottom,left等相对于自身位置来进行偏移:若无则这些偏移都不会起作用 absolute:寻找离自己最近position为relative或absolu ...

  5. C++官方文档-常量成员函数

    #include <iostream> using namespace std; class MyClass { public: int x; static int n; const in ...

  6. OpenACC 梯度下降法求解线性方程的优化

    ▶ 书上第二章,用一系列步骤优化梯度下降法解线性方程组.才发现 PGI community 编译器不支持 Windows 下的 C++ 编译(有 pgCC 命令但是不支持 .cpp 文件,要专业版才支 ...

  7. jsp 调用其他jsp页面 跳转

    response.sendRedirect("test2.jsp"); window.location.reload("test2.jsp"); locatio ...

  8. as3 文档类判断是否被加载

    if (!stage) { trace(("被加载->this.parent:" + this.parent)); }else { trace(("单独打开-> ...

  9. 基于OpenGL编写一个简易的2D渲染框架-12 重构渲染器-BlockAllocator

    BlockAllocator 的内存管理情况可以用下图表示 整体思路是,先分配一大块内存 Chunk,然后将 Chunk 分割成小块 Block.由于 Block 是链表的一个结点,所以可以通过链表的 ...

  10. storyboard中UIButton setframe 不起作用

    将storyboard的autolayout选项关掉!(暂时没发现具体什么原因.)