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); }
}

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

第四十五篇--将文件写入SD卡的更多相关文章

  1. Python之路(第四十五篇)线程Event事件、 条件Condition、定时器Timer、线程queue

    一.事件Event Event(事件):事件处理的机制:全局定义了一个内置标志Flag,如果Flag值为 False,那么当程序执行 event.wait方法时就会阻塞,如果Flag值为True,那么 ...

  2. 第四十五篇、UITableViewCell高度计算

    由于tableView:heightForRowAtIndexPath:方法的调用频率非常高,如果将cell高度的计算过程放在此方法中,那么效率将会非常的低,快速tableview就会出现卡顿 1.通 ...

  3. C++第四十五篇 -- MFC关闭调用的窗口

    调用窗体的方法: // chart是一个MFC的窗体类 chart *chartdialog = new chart; //调用窗体,获取返回值 int ReturnValue = chartdial ...

  4. Android从网络某个地址下载文件、写入SD卡

    首先创建一个HttpDownloader类,获取下载文件的网络地址,将文件下载下来以String流的方式返回: public String download(String urlStr){ //url ...

  5. 从网络上下载文件到sd卡上

    String SDPATH = Environment.getExternalStorageDirectory() + "/"; String path = SDPATH + &q ...

  6. 《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)

    1.简介 在使用appium写app自动化的时候介绍toast的相关元素的定位,在Web UI测试过程中,也经常遇到一些toast,那么这个toast我们这边如何进行测试呢?今天宏哥就分两篇介绍一下. ...

  7. 跟我学SpringCloud | 第十五篇:微服务利剑之APM平台(一)Skywalking

    目录 SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking 1. Skywalking概述 2. Skywalking主要功能 3. Skywalking主要 ...

  8. Egret入门学习日记 --- 第十五篇(书中 6.1~6.9节 内容)

    第十五篇(书中 6.1~6.9节 内容) 好的,昨天完成了第五章. 今天来看第六章. 总结重点: 1.如何对组件进行分组? 跟着做: 重点1:如何对组件进行分组? 首先,选中你想要组合的组件. 然后点 ...

  9. 解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译)

    解剖SQLSERVER 第十五篇  SQLSERVER存储过程的源文本存放在哪里?(译) http://improve.dk/where-does-sql-server-store-the-sourc ...

随机推荐

  1. 利用AccessibilityService自动获取微信号(Android)

    前言: 最近遇到一个需求,要求写一个小插件,能够自动在微信的页面弹出一个窗口,展示用户的相关信息(与我们公司有关的信息,方便运营快速了解用户信息). 当时我第一反应是不可能,如果能够在别的app中获取 ...

  2. 浅谈AndroidGPU过度绘制、GPU呈现模式分析及相关优化

    在真机设备下有一个开发者选项,这个大家都知道,我们最常用的就打开'USB调试'功能,方便真机调试. 在这开发者选项中还有个选项,'调试GPU过度绘制' 这里选择第二个选项'显示过度绘制区域' 可以看到 ...

  3. PMM Client 安装异常报错

    1.PMM架构 如下图所示 2.Client主要组件 PMM Client是安装在你要监视的MySQL或MongoDB主机上的一组代理组件.组件收集关于一般系统和数据库性能的各种数据,并将该数据发送到 ...

  4. Jenkins实现简单的CI功能

    步骤一:安装JDK.Tomcat,小儿科的东西不在此详细描述 步骤二:下载安装Jenkins下载链接:https://jenkins.io/download/ 步骤三:将下载的jenkins.war部 ...

  5. 微信连wifi认证

    官网 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1444894086 https://blog.csdn.net/u0116 ...

  6. API简介

    概述 API(Application Programming Interface),应用程序编程接口.Java API是一本程序员的 字典 ,是JDK中提供给我们使用的类的说明文档.这些类将底层的代码 ...

  7. Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述—— 隐鹤 / HelloWorld

    Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述———— 隐鹤  /  HelloWorld 1. 引言 自本人第一篇博文“Excel阅读模式/单元格行列指示/聚光灯开发技术要 ...

  8. 【问题解决方案】ImportError: No module named 'pygal'

    <Python编程:从入门到实践>一书,第二个项目-可视化,第四节用到pygal 安装部分用 'python -m pip install pygal==1.7' 安装,但使用时仍然报错 ...

  9. CentOS7 64位下MySQL5.7安装与配置(YUM)

    1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/ # 下载mysql源安装包 shell> wget ...

  10. 'python'不是内部或外部命令,也不是可运行程序或批处理文件

    配置两个环境变量: 我的电脑——属性——高级系统设置——环境变量——用户变量——path(新建) 1.配置python\python.exe所在的路径       path新建:C:\Users\Py ...