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卡的状态,有没有挂载,有的话才会进行下面的操作。

  • 相关阅读:
    【python+selenium】selenium grid(分布式)
    【python】导入自定义模块
    Maven的配置以及IDEA导入本地Maven
    java历史概述
    JVM 内存调优 与 实际案例
    ConcurrentHashMap实现线程安全的原理
    Request.UrlReferrer详解
    等比例缩放生成缩略图
    JavaEE的ajax入门
    javaee三层架构案例--简单学生管理系统
  • 原文地址:https://www.cnblogs.com/smart-zihan/p/10681791.html
Copyright © 2011-2022 走看看