Android的文件存储(写入和读取)

package com.t20.fileop;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	private EditText etContent;
	private TextView tvContent;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//输入框
		etContent=(EditText) findViewById(R.id.etContent);
		//文本框
		tvContent=(TextView) findViewById(R.id.tvContent);
	}
	/**
	 * 写入文件
	 * @param v
	 */
	public void write(View v){
		//文件输出流
		FileOutputStream out=null;
		//缓冲写入器
		BufferedWriter writer=null;
		
		String content=etContent.getText().toString();
		
		if(content.isEmpty()){
			Toast.makeText(MainActivity.this, "请输入内容", Toast.LENGTH_SHORT).show();
			return;
		}
		try {
			//安卓封装好的文件写入文件方法
			out=openFileOutput("data.txt", Context.MODE_PRIVATE);//权限:-rwx------(只能自己读写)
			writer=new BufferedWriter(new OutputStreamWriter(out));
			//------------------文件名-------------写入模式-----
			
			//开始写入
			writer.write(content);	
			
			Toast.makeText(MainActivity.this, "文件写入成功!", Toast.LENGTH_SHORT).show();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			
				try {
					if(writer!=null){
					writer.close();
					}
					if(out!=null){
						out.close();
					}
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
		
	}
	/**
	 * 保存文件到SD卡(写入SD卡需要权限,在AndroidManifest.xml中设置android.permission.WRITE_EXTERNAL_STORAGE)
	 * @param v
	 */
	public void writeSD(View v){
		//文件输出流
		FileOutputStream out=null;
		
		String content=etContent.getText().toString();
		if(content.isEmpty()){
			Toast.makeText(MainActivity.this, "请输入内容", Toast.LENGTH_SHORT).show();
			return;
		}
		//设置文件路径
		File file=new File(getExternalFilesDir(null), "/data.txt");
		try {
			out=new FileOutputStream(file);
			out.write(content.getBytes());
			Toast.makeText(MainActivity.this, "成功保存到SD卡!", Toast.LENGTH_SHORT).show();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{		
			try {
				if(out!=null){
					out.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	/**
	 * 读取文件
	 * @param v
	 */
	public void read(View v){
		//文件输入流
		FileInputStream in=null;
		//缓冲读取器
		BufferedReader reader=null;		
		StringBuilder builder=new StringBuilder();
		try {
			//安卓封装好的文件读取文件方法
			in=openFileInput("data.txt");
			reader=new BufferedReader(new InputStreamReader(in));
			//使用流逐行读取
			String line="";
			while ((line=reader.readLine())!=null) {
				builder.append(line);
				
			}
			tvContent.setText(builder.toString());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{			
			try {
				if(reader!=null){
					reader.close();
				}
				if(in!=null){
					in.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}			
		}
	}
	/**
	 * 从SD卡中读取文件(读取SD卡需要权限,在AndroidManifest.xml中设置android.permission.READ_EXTERNAL_STORAGE)
	 * @param v
	 */
	public void readSD(View v){
		//文件输入流
		FileInputStream in=null;
		//设置文件路径
		File file=new File(getExternalFilesDir(null), "/data.txt");
		
		try {
			in=new FileInputStream(file);
			//使用缓冲来读
			byte[] buf=new byte[1024];//每1024字节读一次
			StringBuilder builder=new StringBuilder();			
			while (in.read(buf)!=-1) {
				builder.append(new String(buf).trim());		
			}
			tvContent.setText(builder.toString());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{			
			try {
				if(in!=null){
					in.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}			
		}
	}

}

猜你喜欢

转载自blog.csdn.net/qq15577969/article/details/80771290
今日推荐