一、应用中数据文件的io 操作。
首先Context提供了如下两个方法用于返回文件输出输入流的实例对象;
- FileInputStream openFileInput(String name)
- FileoutputStream openFileOutput(String name,int mode)
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产生错误");
}
}
}
};
}