zoukankan      html  css  js  c++  java
  • 第四十五篇--将文件写入SD卡

    RAM: 运行内存

    ROM: 外部存储,手机内部存储

    SD卡:外部存储,SD卡存储。

    在存储文件时千万不要忘记向清单文件中添加相应权限,并且android6.0以后还要添加运行时权限

    还有一个权限有所不同

    <--在SDCard中创建与删除文件权限--> //此权限9.0系统已经收未官有,可以不用添加

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

    添加权限为:

    <!--往SDCard写入数据权限-->

    <uses-permission android="android.permission.WRITE_EXTERNAL_STORAGE"/>

    MainActivity.java

    package com.example.aimee.writesd;
    
    import android.Manifest;
    import android.os.Environment;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Toast;
    
    import java.io.File;
    import java.io.FileOutputStream;
    
    public class MainActivity extends BaseActivity {
    
        private static final String TAG = "MainActivity";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        /**
         * 模拟向SD卡写入一个视频文件
         * @param view
         */
        public void click(View view) {
    
            performCodeWithPermission("写入文件到sd卡", new PermissionCallback() {
                @Override
                public void hasPermission() {
                    //检查SD卡的状态
                    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
                        Log.i(TAG,Environment.getExternalStorageDirectory().getAbsolutePath());//外部存储
                        Log.i(TAG,Environment.getDataDirectory().getAbsolutePath());//内部存储
                        File sdFile = Environment.getExternalStorageDirectory();//外部存储空间
                        long sdSize = sdFile.getFreeSpace();
                        if (sdSize > 5 *1024 * 1024){
                            File file = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis() + "hlw.3gp");
                            try {
                                FileOutputStream fos = new FileOutputStream(file);
                                byte[] buffer = new byte[1024];
                                for (int i = 0;i<5*1024;i++){
                                    fos.write(buffer);
                                }
                                fos.close();
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                        else
                            Toast.makeText(MainActivity.this,"sd卡存储不足",Toast.LENGTH_SHORT).show();
                    }else {
                        Toast.makeText(MainActivity.this,"没有挂载",Toast.LENGTH_SHORT).show();
                    }
                }
    
                @Override
                public void noPermission() {
                    Toast.makeText(MainActivity.this,"未授权",Toast.LENGTH_SHORT).show();
    
                }
            }, Manifest.permission.WRITE_EXTERNAL_STORAGE);
    
    
        }
    }
    View Code

    SD卡首先是检查SD卡的状态,有没有挂载,有的话才会进行下面的操作。

  • 相关阅读:
    android 第三方开源库 学习汇总之Butter Knife
    android Gradle下载慢,使用阿里镜像
    android 第三方开源库 学习汇总
    <Android Studio> 4.Adapter的那些事 <一>
    <Android Studio> 3.打包APK
    <Android Studio> 2.APP开机启动
    <Android Studio> 1.如何APP配置权限
    Android源码分析(十七)----init.rc文件添加脚本代码
    Android源码分析(十六)----adb shell 命令进行OTA升级
    Android源码分析(十五)----GPS冷启动实现原理分析
  • 原文地址:https://www.cnblogs.com/smart-zihan/p/10681791.html
Copyright © 2011-2022 走看看