android 移动开发 File存储

  一、应用中数据文件的io 操作。

首先Context提供了如下两个方法用于返回文件输出输入流的实例对象;

  • FileInputStream openFileInput(String name)
  • FileoutputStream openFileOutput(String name,int mode)
数据文件默认保存在data/data/packagename/files文件夹下,文件后缀名自定义。

package com.baidu.openfileinputandoutput;

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

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Io_systemActivity extends Activity {
	private Button read,write;
	private EditText write_system;
	private TextView read_system;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_io_system);
		read=(Button) findViewById(R.id.read_data);
		write=(Button) findViewById(R.id.write_data);
		write_system=(EditText) findViewById(R.id.write_system);
		read_system=(TextView) findViewById(R.id.read_system);
		read.setOnClickListener(listenerRead);
		write.setOnClickListener(listenerWrite);
	}
	OnClickListener listenerRead=new   OnClickListener(){

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			read_system.setText(Read());
			write_system.setHint("读出数据如下");
		}};
	OnClickListener listenerWrite=new OnClickListener(){

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			Write(write_system.getText().toString());
			write_system.setText(null);
			write_system.setHint("已经写入数据");
			
		}};
//		读取系统中的数据
	protected CharSequence Read() {
		try {
			FileInputStream fs=openFileInput("open");
			byte [] by=new byte[1024];
			StringBuilder sbd=new StringBuilder();
			int read;
			while((read=fs.read(by))>0){
				sbd.append(new String(by,0,read));
			}
			fs.close();
			return sbd.toString();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
//	写入系统中的数据
	protected void Write(String string) {
		try {
			FileOutputStream fos=openFileOutput("open",Context.MODE_PRIVATE);
			PrintStream ps=new PrintStream(fos);
			ps.println(string);
			ps.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}

}
二、sdcard文件io

manifest中开启访问sd卡的权限,mount_unmount_filesystems    , write_external_storage

而后java中首先判断sdcard是否可用,Environment.getExternalStorageState   与 Environment.Media_Mounted       双方对比是否内容一致。

如果一致  返回sdcard目录    即为:Environment.getExternalStorageDirectory()       其实就是返回一个字符串/mnt/sdcard

而后File包装,io实现。

package com.baidu.sdcard;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;

import android.os.Bundle;
import android.os.Environment;
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;
import android.widget.TextView;

public class SdCardActivity extends Activity {
	private Button write, read;
	private EditText edittext;
	private TextView textview;
	private static final String FILE_NAME = File.separator + "TestWe.txt";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_sd_card);
		edittext = (EditText) findViewById(R.id.editText1);
		textview = (TextView) findViewById(R.id.textView1);
		write = (Button) findViewById(R.id.write_sd);
		read = (Button) findViewById(R.id.read_sd);
		write.setOnClickListener(linsten);
		read.setOnClickListener(linsten);

	}

	OnClickListener linsten = new OnClickListener() {
		@Override
		public void onClick(View v) {
			String s = edittext.getText().toString();
			if (v.getId() == R.id.write_sd) {
				try {
					if (Environment.getExternalStorageState().equals(
							Environment.MEDIA_MOUNTED)) {
						File writefile = Environment
								.getExternalStorageDirectory();
						File target = new File(writefile.getCanonicalPath()
								+ FILE_NAME);
						RandomAccessFile raf = new RandomAccessFile(target,
								"rw");
						raf.seek(target.length());
						raf.write(s.getBytes());
						raf.close();
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
			if (v.getId() == R.id.read_sd) {
				try {
					if (Environment.getExternalStorageState().equals(
							Environment.MEDIA_MOUNTED)) {
						File Readfile = Environment
								.getExternalStorageDirectory();
						FileInputStream fs = new FileInputStream(
								Readfile.getCanonicalFile() + FILE_NAME);
						BufferedReader br = new BufferedReader(
								new InputStreamReader(fs));
						String line = null;
						StringBuilder build = new StringBuilder();
						while ((line = br.readLine()) != null) {
							build.append(line);
						}
						br.close();
						textview.setText(build.toString());
					}
				} catch (Exception e) {
					Log.e("read_sd", "read_sd产生错误");
				}
			}
		}
	};

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值