读写SD卡上的文件

来源:互联网 发布:android清空缓存数据 编辑:程序博客网 时间:2024/06/05 03:43

布局界面为【输入框】、【显示框】、【数据写入按钮】和【数据输出按钮】

为了读写SD卡上的数据,必须在应用程序的清单文件中添加读写SD卡的权限

在SD卡中创建与删除文件权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
向SD卡写入数据的权限:

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>


程序代码如下:

package com.twac.sdcardtest;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.RandomAccessFile;import android.app.Activity;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;public class MainActivity extends Activity {private Button btn_write;private Button btn_read;private EditText edt_write;private EditText edt_read;private final String FILE_NAME = "/crazyit.bin";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn_write = (Button) findViewById(R.id.btn_write);btn_read = (Button) findViewById(R.id.btn_read);edt_write = (EditText) findViewById(R.id.edt_write);edt_read = (EditText) findViewById(R.id.edt_read);btn_write.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// 将edt_write的内容写入文件中write(edt_write.getText().toString());edt_write.setText("");}});btn_read.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {edt_read.setText(read());}});}private void write(String content) {if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {// 获得SD卡的目录File sdCardDir = Environment.getExternalStorageDirectory();try {File targetFile = new File(sdCardDir.getCanonicalPath()+ FILE_NAME);// 以指定文件创建RandomAccessFile对象RandomAccessFile raf = new RandomAccessFile(targetFile, "rw");// 将文件记录指针移动到最后raf.seek(targetFile.length());// 输出文件内容raf.write(content.getBytes());// 关闭RandomAccessFileraf.close();} catch (IOException e) {e.printStackTrace();}}}private String read() {try {// 如果手机插入了SD卡,而且应用程序具有访问SD的权限if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {// 获取SD卡对应的存储目录File sdCardDir = Environment.getExternalStorageDirectory();// 获取指定文件对应的输入流FileInputStream fis = new FileInputStream(sdCardDir.getCanonicalPath() + FILE_NAME);// 将指定输入流包装成BufferedReaderBufferedReader br = new BufferedReader(new InputStreamReader(fis));StringBuilder sb = new StringBuilder("");String line = null;// 循环读取文件内容while ((line = br.readLine()) != null) {sb.append(line);}// 关闭资源br.close();return sb.toString();}} catch (Exception e) {e.printStackTrace();}return null;}}


0 0