效果图
一 向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>