第四十五篇--将文件写入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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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); } }
SD卡首先是检查SD卡的状态,有没有挂载,有的话才会进行下面的操作。