第四十五篇--将文件写入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卡的状态,有没有挂载,有的话才会进行下面的操作。

猜你喜欢

转载自www.cnblogs.com/smart-zihan/p/10681791.html