android 向内存中写入以及读取文件

效果图


一 向Srings.xml中添加相应的文字,以及在main.xml中布局如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/filename" />
    <EditText 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/filename"
       />
     <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/filecontent" />
     
      <EditText 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:minLines="3"
        android:id="@+id/filecontent"
       />
      <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button"
        android:id="@+id/button"
        />
</LinearLayout>
之后再添加相应功能
package your.file;


import java.io.IOException;


import your.file.sou.FileService;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class FileActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button bu = (Button) this.findViewById(R.id.button);
bu.setOnClickListener(new ButtonCl());
}


private class ButtonCl implements View.OnClickListener {


@Override
public void onClick(View v) {
EditText filenameTe = (EditText) findViewById(R.id.filename);
EditText filecontentTe = (EditText) findViewById(R.id.filecontent);
String filename = filenameTe.getText().toString();
String content = filecontentTe.getText().toString();
FileService se = new FileService(getApplicationContext());// 获取应用上下文


try {
/*
* se.save(filename,content);//先存入默认的文件夹
 * 
 * Toast.makeText(getApplicationContext(), R.string.sucess,
* 1).show(); }
*/
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED))// 判断是不是存在sdcard
{
se.saveToSDCard(filename, content);// 存入sdcard
Toast.makeText(getApplicationContext(), R.string.sucess, 1).show();
 else {
Toast.makeText(getApplicationContext(), R.string.shibai, 1).show();
}
} catch (Exception e) {


Toast.makeText(getApplicationContext(), R.string.file, 1).show();
e.printStackTrace();
}

}


}
}
新建类FileService如下
package your.file.sou;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.content.Context;
import android.os.Environment;
import android.util.Log;
/**
 * 
 * @param filename
 * @param content 
 *
 */
public class FileService {
	private Context context;
 public FileService(Context context) {
		this.context = context;
	}

	public void save(String filename, String content) throws Exception {
		FileOutputStream outStream =context.openFileOutput(filename, Context.MODE_PRIVATE);
		outStream.write(content.getBytes());
		outStream.close();
	}
	/**
	 *往sdcard中写文件 
	 * @param filename
	 * @param content
	 * @throws IOException
	 */
	public void saveToSDCard(String filename, String content)throws Exception {
		File file = new File(Environment.getExternalStorageDirectory(), filename);//"/mnt/sdcard"会根据版本兼容问题
		FileOutputStream outStream = new FileOutputStream(file);
		outStream.write(content.getBytes());
		outStream.close();
	
	}
	/**
	 * 读取文件内容
	 * @param filename文件名
	 * @return 文件内容
	 * @throws Exception
	 */
	public String read(String filename)throws Exception{
		FileInputStream inStream=context.openFileInput(filename);
		ByteArrayOutputStream out=new ByteArrayOutputStream();
		byte[] buffer=new byte[1024];
		int len=0;
		while((len=inStream.read(buffer))!=-1){
			out.write(buffer, 0, len);
		}
		byte[] date=out.toByteArray();
		return new String(date);
		
	}

}

为了查看写的是否正确,加入了单元调试环节(调试代码此处不写)。当然还有权限,如下在fest

 
<!-- 在sdcard中创建与删除文件的权限 -->
 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
 <!-- 往sdcard中写入数据的权限 -->
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;">
</span></span>
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值