您的位置:首页 > 移动开发 > Android开发

【android】:android文件读写

2016-06-01 11:21 501 查看


最终效果图,点击save会保存到文件中,点击show会从文件中读取出内容并显示。



main.xml

[xhtml] view
plain copy

<?xml version="1.0" encoding="utf-8"?>  

<LinearLayout xmlns:<a href="http://lib.csdn.net/base/15" class='replace_word' title="undefined" target='_blank' style='color:#df3434; font-weight:bold;'>Android</a>="http://schemas.android.com/apk/res/android"  

    android:orientation="vertical"  

    android:layout_width="fill_parent"  

    android:layout_height="fill_parent"  

    >  

<TextView    

    android:layout_width="fill_parent"   

    android:layout_height="wrap_content"   

    android:text="请您输入要保存的内容:"  

    />  

 <EditText  

    android:id="@+id/addText"  

    android:layout_width="fill_parent"   

    android:layout_height="wrap_content"  

    android:hint="请您在此处输入文件内容!"  

 />     

 <Button   

    android:id="@+id/addButton"  

    android:layout_width="wrap_content"   

    android:layout_height="wrap_content"  

    android:text="save"  

 />  

 <Button  

    android:id="@+id/showButton"  

    android:layout_width="wrap_content"   

    android:layout_height="wrap_content"  

    android:text="show"  

 />  

 <TextView  

    android:id="@+id/showText"    

    android:layout_width="fill_parent"   

    android:layout_height="wrap_content"   

    />  

   

</LinearLayout>  

 

 

activity代码

 

[java] view
plain copy

package cn.com.file;  

  

import java.io.ByteArrayOutputStream;  

import java.io.FileInputStream;  

import java.io.FileNotFoundException;  

import java.io.FileOutputStream;  

import java.io.IOException;  

  

import android.app.Activity;  

import android.os.Bundle;  

import android.view.View;  

import android.view.View.OnClickListener;  

import android.widget.Button;  

import android.widget.EditText;  

import android.widget.TextView;  

import android.widget.Toast;  

  

public class FileTest extends Activity {  

    private EditText editText;  

    private TextView showTextView;  

    // 要保存的文件名  

    private String fileName = "chenzheng_java.txt";  

  

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.main);  

        // 获取页面中的组件  

        editText = (EditText) findViewById(R.id.addText);  

        showTextView = (TextView) findViewById(R.id.showText);  

        Button addButton = (Button) this.findViewById(R.id.addButton);  

        Button showButton = (Button) this.findViewById(R.id.showButton);  

        // 绑定单击事件  

        addButton.setOnClickListener(listener);  

        showButton.setOnClickListener(listener);  

  

    }  

  

    // 声明监听器  

    private View.OnClickListener listener = new OnClickListener() {  

        public void onClick(View v) {  

            Button view = (Button) v;  

            switch (view.getId()) {  

            case R.id.addButton:  

                save();  

                break;  

            case R.id.showButton:  

                read();  

                break;  

  

            }  

  

        }  

  

    };  

  

    /** 

     *@author chenzheng_Java  

     *保存用户输入的内容到文件 

     */  

    private void save() {  

  

        String content = editText.getText().toString();  

        try {  

            /* 根据用户提供的文件名,以及文件的应用模式,打开一个输出流.文件不存系统会为你创建一个的, 

             * 至于为什么这个地方还有FileNotFoundException抛出,我也比较纳闷。在Context中是这样定义的 

             *   public abstract FileOutputStream openFileOutput(String name, int mode) 

             *   throws FileNotFoundException; 

             * openFileOutput(String name, int mode); 

             * 第一个参数,代表文件名称,注意这里的文件名称不能包括任何的/或者/这种分隔符,只能是文件名 

             *          该文件会被保存在/data/data/应用名称/files/chenzheng_java.txt 

             * 第二个参数,代表文件的操作模式 

             *          MODE_PRIVATE 私有(只能创建它的应用访问) 重复写入时会文件覆盖 

             *          MODE_APPEND  私有   重复写入时会在文件的末尾进行追加,而不是覆盖掉原来的文件 

             *          MODE_WORLD_READABLE 公用  可读 

             *          MODE_WORLD_WRITEABLE 公用 可读写 

             *  */  

            FileOutputStream outputStream = openFileOutput(fileName,  

                    Activity.MODE_PRIVATE);  

            outputStream.write(content.getBytes());  

            outputStream.flush();  

            outputStream.close();  

            Toast.makeText(FileTest.this, "保存成功", Toast.LENGTH_LONG).show();  

        } catch (FileNotFoundException e) {  

            e.printStackTrace();  

        } catch (IOException e) {  

            e.printStackTrace();  

        }  

  

    }  

  

    /** 

     * @author chenzheng_java  

     * 读取刚才用户保存的内容 

     */  

    private void read() {  

        try {  

            FileInputStream inputStream = this.openFileInput(fileName);  

            byte[] bytes = new byte[1024];  

            ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();  

            while (inputStream.read(bytes) != -1) {  

                arrayOutputStream.write(bytes, 0, bytes.length);  

            }  

            inputStream.close();  

            arrayOutputStream.close();  

            String content = new String(arrayOutputStream.toByteArray());  

            showTextView.setText(content);  

  

        } catch (FileNotFoundException e) {  

            e.printStackTrace();  

        } catch (IOException e) {  

            e.printStackTrace();  

        }  

  

    }  

  

}  

其他的都为默认。

关于文件保存的路径可以通过ADT携带的File Explorer工具进行查看。如何调出File Explorer工具呢;我们可以通过Windows--showView--others-android下面看到File Explorer。这里是我的一个截图。


 

对于这个程序,基本上没什么难点,就是纯粹的java流知识。唯一不同的就是context为我们提供了两个方法来获取输入输出流。简单、方便、快捷啊。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: