Android SD卡文件读写操作

本文介绍了如何在Android应用中实现SD卡的文件读写操作。内容包括将操作封装到一个类中,如SDFile.java,并在MainActivity中实例化进行使用。同时,别忘了在布局文件中设置输入框、按钮和文本显示,并在AndroidManifest.xml中添加必要的读写权限。
摘要由CSDN通过智能技术生成

文件读写没什么好说的,但是关于SD卡的文件读写,也是第一次。
1、把所有的进行实际操作的封装成一个类;
2、在MainActivity中实例化对象然后去用。

  • layout布局文件中,一个输入框,两个按钮,一个文本显示
  • 记得在配置文件中加入读写文件的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

SDFile.java

package com.sdfile;

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;

public class SDFile {

    /**
     * 记得在配置文件中加入SD卡的文件读写权限
     */
    private Context context;

    public SDFile(Context context) {
        this.context = context;
    }

    public SDFile() {
    }

    String sdRootPath = Environment.getExternalStorageDirectory()
            .getAbsolutePath();
    //新建文件夹,传入的字符串是文件名
    public File crateFodler(String dir) {
        File dirFile = new File(sdRootPath + File.separator
                + dir + File.separator);
        dirFile.mkdirs();
        return dirFile;
    }

    public String getFile(String fileName) {
        FileInputStream inputStream = null;
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        File file = new File(Environment.getExternalStorageDirectory()+"/.jiangjiwei",
                fileName);
        if (Environment.MEDIA_MOUNTED.equals(Environment
                .getExternalStorageState())) {
            try {
                inputStream = new FileInputStream(file);
                int len = -1;
                byte[] data = new byte[1024];
                while ((len = inputStream.read(data)) != -1) {
                    outputStream.write(data, 0, len);
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        return new String(outputStream.toByteArray());
    }

    public boolean saveContent(String fileName, String content) {
        boolean flag = false;
        FileOutputStream fileOutputStream = null;

        File file = new File(Environment.getExternalStorageDirectory()+"/.jiangjiwei",
                fileName);
        if (Environment.MEDIA_MOUNTED.equals(Environment
                .getExternalStorageState())) {
            try {
                fileOutputStream = new FileOutputStream(file);
                fileOutputStream.write(content.getBytes());
                flag = true;
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

        return flag;
    }

}

MainActivity.java

package com.sdfile;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

    private EditText editText;
    private Button saveButton, readButton;
    private TextView textView;

    private String fileNameString = "text.txt";
    private String contextString;

    private SDFile sdFile;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText) findViewById(R.id.edittext);
        saveButton = (Button) findViewById(R.id.save);
        readButton = (Button) findViewById(R.id.read);
        textView = (TextView) findViewById(R.id.textview);

        sdFile = new SDFile(MainActivity.this);
        saveButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                contextString = editText.getText().toString();
                sdFile.crateFodler(".jiangjiwei");
                sdFile.saveContent(fileNameString, contextString);
                makeText("save Is Done");
                makeText(Environment.getExternalStorageDirectory() + "");
            }
        });

        readButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                contextString = sdFile.getFile(fileNameString);
                textView.setText(contextString);
                makeText("read Is Done");
            }
        });

    }

    void makeText(String sss) {
        // Toast.makeText(this, sss, 0).show();
        Log.e("" + "SDFile", sss);

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值