android学习笔记46——File存储

File存储——IO操作文件

openFileOutput、openFileInput

Context提供了如下两个方法来打开本应用程序的数据文件夹里面的文件IO流。

1.FileInputStream openFileInput(String name):打开应用程序中的数据文件夹下的name文件对应输入流

2.FileOutputStream openFileOutput(String name,int mode):打开应用程序的数据文件下的name文件对应的输出流

注意:

FileOutputStream openFileOutput(String name,int mode)中mode参数用于指定打开文件的模式,支持模式如下:

1.MODE_PRIVATE:改文件只能被当前程序读写;

2.MODE_APPEND:以追加的方式打开该文件,应用程序可以向该文件中追加内容;

3.MODE_WORLD_READABLE:该文件的内容可以被其他程序读取(只读);

4.MODE_WORLD_WRITEABLE:该文件的内容可以不其他程序读、写;

除此之外,Context还提供了如下两个方法来访问应用程序的数据文件夹.

1.getDir(String name,int mode):在应用程序的数据文件夹下获取或创建name对应的子目录;

2.File getFilesDir():获取该应用程序的数据文件夹的绝对路径;

3.String[] fileList():返回该应用程序的数据文件夹下的全部文件;

4.deleteFile(String):删除该应用程序的数据文件夹下指定的文件;

实例如下:实现读写应用程序数据文件夹内的文件。

布局文件==》
<LinearLayout 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:orientation="vertical"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/edit1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btnone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="write" />

    <EditText
        android:id="@+id/edit2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btnTwo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="read" />

</LinearLayout>

代码实现==》
package com.example.myfile;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintStream;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity
{
	final String FILE_NAME = "crazyit.bin";
	EditText Edit1;
	EditText Edit2;

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		Button btnOne = (Button) this.findViewById(R.id.btnone);
		Button btnTwo = (Button) this.findViewById(R.id.btnTwo);
		Edit1 = (EditText) this.findViewById(R.id.edit1);
		Edit2 = (EditText) this.findViewById(R.id.edit2);
		btnOne.setOnClickListener(new MyButtonClick());
		btnTwo.setOnClickListener(new MyButtonClick());
	}

	private class MyButtonClick implements OnClickListener
	{
		@Override
		public void onClick(View v)
		{
			switch (v.getId())
			{
			case R.id.btnone:
				Log.i("swg", "write==" +Edit1.getText());
				write(Edit1.getText().toString());
				Edit1.setText("");
				break;
			case R.id.btnTwo:
				Log.i("swg", "read==" +read());
				Edit2.setText(read());
				break;
			}
		}

		private String read()
		{
			try
			{
				FileInputStream fis = openFileInput(FILE_NAME);
				byte[] buff = new byte[1024];
				int hasread = 0;
				StringBuilder sb = new StringBuilder("");
				while ((hasread = fis.read(buff)) > 0)
				{
					sb.append(new String(buff, 0, hasread));
				}
				return sb.toString();
			} catch (Exception e)
			{
				e.printStackTrace();
			}
			return null;
		}

		private void write(String content)
		{
			try
			{
				// 以追加模式打开文件输出流
				FileOutputStream fos = openFileOutput(FILE_NAME, MODE_APPEND);
				// 将FileOutputStream包装成PrintStream
				PrintStream ps = new PrintStream(fos);
				// 输出文件内容
				ps.println(content);
				ps.close();
			} catch (Exception e)
			{
				e.printStackTrace();
			}
		}

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu)
	{
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

运行效果:

原文地址:https://www.cnblogs.com/YYkun/p/5953698.html