安卓中读写SD卡文件

来源:互联网 发布:mac系统下面的图标 编辑:程序博客网 时间:2024/05/14 09:35
1.在清单文件中添加权限:
    <!-- 在SD卡中创建与删除文件权限 -->    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />    <!-- 向SD卡写入数据权限 -->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


2.布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <EditText        android:id="@+id/editText"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="写入文件的内容" />    <Button        android:id="@+id/read"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_below="@id/editText"        android:text="读取文件" />    <Button        android:id="@+id/write"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_below="@id/read"        android:text="写入文件" />    <TextView        android:id="@+id/show"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_below="@id/write"        android:text="" /></RelativeLayout>


 

3.源代码:

package com.dinglitouzi;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.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.app.Activity;public class MainActivity extends Activity implements OnClickListener{private Button read_btn,write_btn;private EditText editText;private TextView show;private String FILE_NAME="wang.txt";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);read_btn=(Button) findViewById(R.id.read);write_btn=(Button) findViewById(R.id.write);show=(TextView) findViewById(R.id.show);editText=(EditText) findViewById(R.id.editText);read_btn.setOnClickListener(this);write_btn.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.read:String str=read(FILE_NAME);if (str!=null) {show.setText(str);}else{show.setText("未读取到内容");}break;case R.id.write:String content=editText.getText().toString();write(content, FILE_NAME);break;default:break;}}/** * 写入方法 * @param content 写入的内容 * @param fileName 写入文件的文件名称 */private void write(String content,String fileName){try {//手机是否插入了SD卡if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {//获取SD卡的目录File sdCardDir=Environment.getExternalStorageDirectory();File file=new File(sdCardDir.getCanonicalPath()+"/"+fileName);//创建RandomAccessFile对象RandomAccessFile raf=new RandomAccessFile(file, "rw");//将文件记录指针移动到最后raf.seek(file.length());//写入文件raf.write(content.getBytes());raf.close();}} catch (Exception e) {e.printStackTrace();}}/** * 读取文件 * @param fileName 文件名称 * @return 读取的字符串 */private String read(String fileName){try {//手机是否插入了SD卡if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {//获取SD卡的目录File sdCardDir=Environment.getExternalStorageDirectory();FileInputStream fis=new FileInputStream(sdCardDir.getCanonicalPath()+"/"+fileName);BufferedReader bf=new BufferedReader(new InputStreamReader(fis));StringBuffer sb=new StringBuffer("");String line=null;while ((line=bf.readLine())!=null) {sb.append(line);}bf.close();return sb.toString();}return null;} catch (Exception e) {e.printStackTrace();return null;}}}