zoukankan      html  css  js  c++  java
  • Android-SDCard外部存储文件读写

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

    一想到Android中到SdCard就要想到 Environment,写入到路径一定要用Environment,读取到路径一定要要用Environment,因为每部手机到SdCard到路径都会不同Environment.getExternalStorageDirectory()

    千万不要这样写路径,例如:/mnt/sdcard/ /sdcard/storage/    等等

    SdCard读文件读写操作:

    package liudeli.datastorage;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Environment;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class SdcardActivity extends Activity implements View.OnClickListener {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_sdcard);
    
            initViewListener();
        }
    
        private void initViewListener() {
            Button btCheckMountState = findViewById(R.id.bt_check_mount_state);
            Button btOutput = findViewById(R.id.bt_output_sdcard);
            Button btInput = findViewById(R.id.bt_input_sdcard);
    
            btCheckMountState.setOnClickListener(this);
            btOutput.setOnClickListener(this);
            btInput.setOnClickListener(this);
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.bt_check_mount_state:
                    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                        alterToast("Sdcard可用");
                    } else {
                        alterToast("Sdcard不可用");
                    }
                    break;
                case R.id.bt_input_sdcard: {
                    File file = new File(Environment.getExternalStorageDirectory(), "MySdcard.txt");
                    if (!file.exists()) {
                        alterToast("Sdcard的文件不存在");
                        return;
                    }
                    try {
                        BufferedReader br = new BufferedReader(new FileReader(file));
                        String result = br.readLine();
                        alterToast(result);
                        br.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    break;
                }
                case R.id.bt_output_sdcard: {
                    File file = new File(Environment.getExternalStorageDirectory(), "MySdcard.txt");
                    if (!file.exists()) {
                        try {
                            file.createNewFile();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    try {
                        FileWriter fileWriter = new FileWriter(file);
                        fileWriter.write("饭撒发生的噶地方舒服舒服撒冯绍峰撒");
                        fileWriter.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    break;
                }
                default:
                    break;
            }
        }
    
        private void alterToast(String text) {
            Toast.makeText(SdcardActivity.this, text, Toast.LENGTH_LONG).show();
        }
    }

    Layout Code:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <Button
            android:id="@+id/bt_check_mount_state"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="检查SDCard挂载状态"/>
    
        <Button
            android:id="@+id/bt_output_sdcard"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="写入到Sdcard文件"
            />
    
        <Button
            android:id="@+id/bt_input_sdcard"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="读取Sdcard文件"
            />
    
    </LinearLayout>
  • 相关阅读:
    【IDDFS】Power Calculus
    【A*/K短路】 [USACO08MAR]Cow Jogging G
    P1880 [NOI1995]石子合并
    【区间DP】[USACO16OPEN]248 G
    【树上背包】P1273 有线电视网
    【分组背包】[BJOI2019]排兵布阵
    DP学习笔记——背包专题
    【思维/构造】D
    【线段树+扫描线】P5490 【模板】扫描线
    【最小生成树】畅通工程再续 HDU
  • 原文地址:https://www.cnblogs.com/android-deli/p/10088515.html
Copyright © 2011-2022 走看看