Android开发入门(十八)文件 18.1 保存到内部存储设备

SharedPreferences对象能够让你去保存一些“键值对”类型的数据,比如用户id,生日,性别,身份证 号等等。但是,有的时候你需要去使用传统的文件系统去保存数据。例如你可能想要去保存一篇文章,而这 篇文章要被展示在你的应用中。在Android系统中,你也可以使用java.io包去实现这个功能。

在 Android系统中,第一种保存文件的方法是存储到内部设备。下面展示如何保存用书输入的字符串到内部存储 设备。

1. 创建一个工程,Files。

2. main.xml中的代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >     

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Please enter some text" />     

    <EditText
        android:id="@+id/txtText1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />     

    <Button
        android:id="@+id/btnSave"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="onClickSave"
        android:text="Save" />     

    <Button
        android:id="@+id/btnLoad"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="onClickLoad"
        android:text="Load" />     

</LinearLayout>

3. FilesActivity.java中的代码。

package net.manoel.Files; 

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;     

import net.learn2develop.Files.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;     

public class FilesActivity extends Activity {
    EditText textBox;
    static final int READ_BLOCK_SIZE = 100;     

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);     

        textBox = (EditText) findViewById(R.id.txtText1);     

    }     

    public void onClickSave(View view) {
        String str = textBox.getText().toString();
        try
        {
            FileOutputStream fOut =
                    openFileOutput("textfile.txt",
                            MODE_WORLD_READABLE);     

            OutputStreamWriter osw = new
                    OutputStreamWriter(fOut);     

            //---write the string to the file---
            osw.write(str);
            osw.flush();
            osw.close();     

            //---display file saved message---
            Toast.makeText(getBaseContext(),
                    "File saved successfully!",
                    Toast.LENGTH_SHORT).show();     

            //---clears the EditText---
            textBox.setText("");
        }
        catch (IOException ioe)
        {
            ioe.printStackTrace();
        }
    }     

    public void onClickLoad(View view) {
        try
        {     

            FileInputStream fIn =
                    openFileInput("textfile.txt");
            InputStreamReader isr = new
                    InputStreamReader(fIn);     

            char[] inputBuffer = new char[READ_BLOCK_SIZE];
            String s = "";     

            int charRead;
            while ((charRead = isr.read(inputBuffer))>0)
            {
                //---convert the chars to a String---
                String readString =
                        String.copyValueOf(inputBuffer, 0,
                                charRead);
                s += readString;     

                inputBuffer = new char[READ_BLOCK_SIZE];
            }
            //---set the EditText to the text that has been
            // read---
            textBox.setText(s);     

            Toast.makeText(getBaseContext(),
                    "File loaded successfully!",
                    Toast.LENGTH_SHORT).show();
        }
        catch (IOException ioe) {
            ioe.printStackTrace();
        }     

    }     

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, android
, edittext
, string
, android edittext
, textbox
, openfileoutput
, import
, android文件存储
内部存储
android 内部存储路径、android 内部存储、android 内部存储权限、android 读取内部存储、android获取内部存储,以便于您获取更多的相关知识。

时间: 2024-05-13 06:50:34

Android开发入门(十八)文件 18.1 保存到内部存储设备的相关文章

Android开发入门(十八)文件 18.2保存到外部存储设备(SD卡)

上一节介绍了如何把文件存储到内部设备.有的时候,需要把文件存储到外部存储设备,比如SD卡.因为 SD卡具有更大的存储空间,同时也可以很容易的和其他用户分享这些文件. 使用上一节的例子,把用 户输入的文字保存在SD卡,修改onClick()事件.如下: public class FilesActivity extends Activity { EditText textBox; static final int READ_BLOCK_SIZE = 100; /** Called when the

Windows 8风格应用开发入门 十八 基础控件I

ProgressRing: ProgressRing控件常见的效果图: 开发入门 十八 基础控件I-书法入门十八法"> 如何在XAML代码中声明ProgressRing控件呢?代码如下: ProgressRing控件包含IsActive属性,该属性控制ProgressRing控件是否激活可用.默认情况下IsActive属性值为Ture,我们也可以将其值设置为False. 另外我们也可以在C#代码中声明ProgressRing控件,添加到布局控件中.代码可以如下: 关于ProgressRin

Android开发入门(八)使用活动栏 8.3 自定义ActionBar

在上一节中,菜单选项是没有文字的.如果想要同时显示图标和文字,可以一起使用"|"和 MenuItem.SHOW_AS_ACTION_WITH_TEXT常量. MenuItem mnu1 = menu.add(0, 0, 0, "Item 1"); { mnu1.setIcon(R.drawable.ic_launcher); mnu1.setShowAsAction( MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_A

Android开发入门(八)使用活动栏 8.1 操纵ActionBar

除了fragments(碎片),在Android3和4中新增加的特性,还有ActionBar(活动栏).ActionBar位于传 统标题栏的位置,就在设备屏幕的顶部.ActionBar显示了应用的图标和Activity的标题.可选择地, ActionBar的右侧是那些action items(活动项目).下图展示了build-in(内置的)Email应用,显示了应 用的图标,Activity(活动)的标题,以及一些活动项目.下一节将详细地讨论action items(活动项目) . 开发入门(八

Android开发入门(八)使用活动栏 8.2 添加ActionBar物件

除了在ActionBar的左侧显示应用图标和Activity的标题,也可以在ActionBar上面显示额外的项目.这些 被添加的项目被叫做"action items".这些项目就是一些在你应用中一些功能的快捷方式.举个例子,你 正在开发一块RSS阅读器,那么action items就可能是"刷新"."删除"和"添加". 下面的例子 演示如何在ActionBar中添加项目. 1. 使用上一节的项目,在MyActionBarAct

Kinect for Windows SDK开发入门(十八)Kinect Interaction交互控件

今年三月份发布了1.7版本的SDK,这一版本的SDK较前一版本最大的变化是添加了Kinect Interactions 和 Kinect Fusion.Kinect Interactions 提供了一些新的带有姿势识别的控件如 push-to-press 按钮, grip-to-pan 列表控件, 而且支持多用户,同时二个人进行的交互,这些新添加的控件能够非常方便的集成到应用程序中,极大的简化了开发和调试过程. 1.7 SDK中新增的第二个功能是去年在Build 2012大会上提到的Kinect

Android开发入门系列

Android开发入门(二十)内容提供者 20.3 经过预定义的查询字符 Android开发入门(二十)内容提供者 20.2 ContentProvider的使用 Android开发入门(二十)内容提供者 20.1 数据共享 Android开发入门(十九)数据库 19.3 预创建数据库 Android开发入门(十九)数据库 19.2 使用数据库 Android开发入门(十九)数据库 19.1创建数据库辅助类 Android开发入门(十八)文件 18.4使用静态资源 Android开发入门(十八)

Android开发入门(十八)文件 18.4使用静态资源

除了可以在运行时去创建并使用文件,也可以在设计阶段把文件放在程序包中,这样一来就可以在运行时 去使用他们.举个例子,你想把一些帮助文件打包进程序,当用户需要的时候,就可以展示给他们看.在这 种情况下,应该把文件放在res/raw文件夹下面. 开发入门(十八)文件 18.4使用静态资源-伪静态规则 入门"> 想要在代码中使用这个文件,需要调用Activity的getResources()方法,返回一个Resources对象.然后 ,使用它的openRawResource()方法去打开res/

Android开发入门(二十)内容提供者 20.1 数据共享

在上一章节中,我们介绍了数据持久化的几种方法:首选项,文件,以及数据库.在保存复杂的数据结构 时,推荐使用SQliteDatabase.但是,共享数据就成了一种挑战,因为,数据库只对创建它的程序包可用. 在这一章节中,将会介绍Android特有的数据共享方式:使用ContentProvider.也会介绍如何使用内 置的ContentProvider,以及创建自己的ContentProvider,以便在多个程序包之间共享数据. 在 Android中,共享数据的推荐方式是使用ContentProvi