您的位置:首页 > 其它

安卓入门之往SD卡存文件

2014-12-21 22:53 134 查看
做一个安卓小应用:保存文件之SD卡

先睹为快,看看界面如何:



先来说说该界面如何实现。我采用相对布局,在里面添加了5个组件:2个文本框(请输入文件名,请输入文件内容),2个编辑框,1个保存按钮。

给他们分别定义了唯一标识id,长宽设置,还有相对位置(android:layout_below)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
android:id="@+id/file"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/telText" />
<EditText
android:id="@+id/fileName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/file"
/>
<TextView
android:id="@+id/filec"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/contentText"
android:layout_below="@id/fileName"
/>
<EditText
android:id="@+id/fileContent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minLines="3"
android:layout_below="@id/filec"/>
<Button
android:id="@+id/send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/send"
android:layout_below="@id/fileContent"
/>

</RelativeLayout>


接着,用java代码编写,加载控件,然后给他们添加事件。

<span style="white-space:pre">	</span>@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);<span style="font-family: Arial, Helvetica, sans-serif;">//加载布局文件</span>
Button button = (Button)this.findViewById(R.id.send);//获取控件id
button.setOnClickListener(new ButtonClickListenter());//给按钮添加点击事件。事件内容请往下看。
}


编写点击事件内容的类:

private final class ButtonClickListenter implements View.OnClickListener{

@Override
public void onClick(View arg0) {
EditText filenameText = (EditText)findViewById(R.id.fileName);
EditText contentText = (EditText)findViewById(R.id.fileContent);<span style="font-family: Arial, Helvetica, sans-serif;">//获取控件id</span>
String filename = filenameText.getText().toString();<span style="white-space:pre">	</span>//获取编辑框的内容
String content = contentText.getText().toString();<span style="font-family: Arial, Helvetica, sans-serif;">//获取编辑框的内容</span>
FileService service = new FileService();//实例化类(具体类的内容下一部分代码)
try{
//Environment.getExternalStorageState() SD卡是否存在且允许读写数据
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
service.saveToSDCard(filename,content);<span style="white-space:pre">	</span>//往SD卡写入内容
Toast.makeText(getApplicationContext(), R.string.success, 1).show();//吐丝提示用户信息
}else{//SD卡不否存且写保护了
Toast.makeText(getApplicationContext(), R.string.sdcarderror, 1).show();
}
}catch(Exception e){
Toast.makeText(getApplicationContext(), R.string.fail, 1).show();
e.printStackTrace();
}
}
}
FileService类代码:

public class FileService {

//保存到sd卡 参数(文件名,内容)
public void saveToSDCard(String filename, String content) throws Exception{
//新建文件,路径:sd卡,文件名:filename
File file = new File(Environment.getExternalStorageDirectory(), filename);
//保存到路径
FileOutputStream outStream = new FileOutputStream(file);
//写
outStream.write(content.getBytes());
//关闭路径
outStream.close();
}
}


以上代码基本实现功能了,但是记得,往SD卡写入信息是需要一些权限的,如创建删除文件权限,读写权限。所以记得要在AndroidManifest.xml里注册写信息:
<span style="white-space:pre">	</span><!-- 往sd创建删除文件权限-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往sd卡写入权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
来目睹下结果吧。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: