第四十五篇--将文件写入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); }
}
SD卡首先是检查SD卡的状态,有没有挂载,有的话才会进行下面的操作。
第四十五篇--将文件写入SD卡的更多相关文章
- Python之路(第四十五篇)线程Event事件、 条件Condition、定时器Timer、线程queue
一.事件Event Event(事件):事件处理的机制:全局定义了一个内置标志Flag,如果Flag值为 False,那么当程序执行 event.wait方法时就会阻塞,如果Flag值为True,那么 ...
- 第四十五篇、UITableViewCell高度计算
由于tableView:heightForRowAtIndexPath:方法的调用频率非常高,如果将cell高度的计算过程放在此方法中,那么效率将会非常的低,快速tableview就会出现卡顿 1.通 ...
- C++第四十五篇 -- MFC关闭调用的窗口
调用窗体的方法: // chart是一个MFC的窗体类 chart *chartdialog = new chart; //调用窗体,获取返回值 int ReturnValue = chartdial ...
- Android从网络某个地址下载文件、写入SD卡
首先创建一个HttpDownloader类,获取下载文件的网络地址,将文件下载下来以String流的方式返回: public String download(String urlStr){ //url ...
- 从网络上下载文件到sd卡上
String SDPATH = Environment.getExternalStorageDirectory() + "/"; String path = SDPATH + &q ...
- 《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
1.简介 在使用appium写app自动化的时候介绍toast的相关元素的定位,在Web UI测试过程中,也经常遇到一些toast,那么这个toast我们这边如何进行测试呢?今天宏哥就分两篇介绍一下. ...
- 跟我学SpringCloud | 第十五篇:微服务利剑之APM平台(一)Skywalking
目录 SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking 1. Skywalking概述 2. Skywalking主要功能 3. Skywalking主要 ...
- Egret入门学习日记 --- 第十五篇(书中 6.1~6.9节 内容)
第十五篇(书中 6.1~6.9节 内容) 好的,昨天完成了第五章. 今天来看第六章. 总结重点: 1.如何对组件进行分组? 跟着做: 重点1:如何对组件进行分组? 首先,选中你想要组合的组件. 然后点 ...
- 解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译)
解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译) http://improve.dk/where-does-sql-server-store-the-sourc ...
随机推荐
- SpringBoot JPA(实现查询多值)
JPA是java Persistence API简称,中文名:java持久层API,JPA是JCP组织发布的J2EE标准之一 1.创建DataSource连接池对象 <dependency> ...
- 微信小程序 选择微信自带的地址 用户授权选择了拒绝
// 选择微信自带地址 addAddr:function () { wx.chooseAddress({ success: function (res) { self.setData({ addrIn ...
- 解决Geoserver请求跨域的几种思路
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景描述 跨域问题是浏览器同源安全制引起的特别常见的问题.不同前端语 ...
- asp.net core 集成 log4net 日志框架
asp.net core 集成 log4net 日志框架 Intro 在 asp.net core 中有些日志我们可能想输出到数据库或文件或elasticsearch等,如果不自己去实现一个 Logg ...
- MySQL 关于性能的参数配置梳理
以下List是我们常见的MySQL参数配置,这个参数对提高实例的性能大有裨益. 其中 建议设置值,仅供参考,需要根据自己的业务场景和硬件资源仔细推敲. 参数 设置说明 建议设置值 lower_case ...
- Review: Basic Knowledge about JavaScript 1
JavaScript shanzm
- 海思uboot启动流程详细分析(一)
第一阶段 start.S 首先我们可以在u-boot.lds中看到ENTRY(_start),即指定了入口_start,_start也就是整个start.S的最开始: 1. reset 在arch\a ...
- linux 系统shell运行程序不退出
如果通过ssh远程连接到linux系统终端,在shell下执行程序.假如程序名称为app,且程序本身会一直执行不退出,程序执行需要参数文件paramfile. 当我们用 ./app paramfile ...
- SpringBoot中集成Swagger2
1.依赖jar <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-s ...
- MyEclipse 的智能提示设置 使开发写代码的速度更快
MyEclipse 是学习java 的人 最经常使用的IDE ,经常看到非常多人写代码的速度非常快.事实上他们大多数都使用了代码提示功能,代码提示有好有坏,好的方面就是使在项目开发中速度更快,不用去记 ...