assets通常存储音频视频文件,但不要太大。
Environment可以获取sd卡的相关信息,
sd卡的根路径:/storage/sdcard

activity.java

package com.sxt.day06_07;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.widget.Toast; public class MainActivity extends Activity { private static final String FILE_NAME = "sxt_logo.png";
//将工程assets下的sxt_logo.png图片保存进sd卡
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(Environment.getExternalStorageState().equals(Environment.MEDIA_UNMOUNTED)){//MEDIA_UNMOUNTED没有挂载
//若没有sd卡
Toast.makeText(this, "sd卡没有准备好", 2000).show();
return ;
}
InputStream in = null;
OutputStream out=null;
try {
in=getAssets().open(FILE_NAME);//getAssets返回AssetManager对象(管理Asset的管理器),获取了工程磁盘assets下的sxt_logo.png图片
File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);//获取sd卡的保存图pain的路径/storage/sdcard/Pictures
File file=new File(dir, FILE_NAME);
out=new FileOutputStream(file);
int len;
byte[] buffer=new byte[8*1024];//每次读取8K
while((len=in.read(buffer))!=-1){
out.write(buffer, 0, len);//将内存中的buffer写到输出流代表的sd卡
}
Toast.makeText(MainActivity.this, "文件保存完毕", 2000).show();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
} }

工程描述文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sxt.day06_07"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 申请读sd卡的权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 申请写sd卡的权限
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.sxt.day06_07.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest>

android 41 Environment的更多相关文章

  1. Could not install the app on the device, read the error above for details. Make sure you have an Android emulator running or a device connected and have set up your Android development environment:

    Administrator@DESKTOP-EHCTIOR MINGW64 /d/react-native-eyepetizer (master) $ react-native run-android ...

  2. Android中Environment与StatFs获取系统/SDCard存储空间大小

    近期想起Android开发的知识.好久没有使用了,都忘得几乎相同了,今天查看了一会资料往回捡捡,顺便写下来帮助一下须要的同学. 首先讲述一下Environment与StatFs这两个类,然后介绍它们的 ...

  3. Android的Environment.getExternalStorageState的使用

    1.sd状态 sd状态 现象描述  /mnt/sdcard目录是否存在 canRead返回 canWrite返回 MEDIA_MOUNTED  SD卡正常挂载 true true true MEDIA ...

  4. Android 中 Environment.getExternalStorageDirectory()无效

    我们在处理缓存的时候,并不是每次都会在应用私有存储空间那里保存,很多时候是需要用到ExternalStorage.我们平时一般都是用Environment.getExternalStorageDire ...

  5. android的Environment类 Android存储访问及目录

    http://www.cnblogs.com/mengdd/p/3742623.html http://blog.csdn.net/barnett_zhubo/article/details/6832 ...

  6. Android开发学习---如何写数据到外部存储设备(sd卡),Environment.getExternalStorageDirectory,怎么获取sd卡的大小?

    本文主要介绍如何写数据到sd卡,这里主要到的技术是Environment中的方法. 1. 2.实现代码: /datasave/src/com/amos/datasave/savePasswordSer ...

  7. Android—SDCard数据存取&Environment简介

    1:Environment简介: Environment是android.os包下的一个类,谷歌官方文旦的解释为:Provides access to environment variables(提供 ...

  8. Android Environment 类详解

    Android应用开发中,常使用Environment类去获取外部存储目录,在访问外部存储之前一定要先判断外部存储是否已经是可使用(已挂载&可使用)状态, 并且需要在AndroidManife ...

  9. Android Environment 判断sd卡是否挂载 获取sd卡目录

    在将一个文件存储到sd卡上面的时候,一般需要判断sd是否已经挂载才进行操作. 那么如何判断sd卡已经挂载呢? 我们可以使用Android的Environment类,具体使用如下: if(Environ ...

随机推荐

  1. There are no accidents.

    愿你攒齐足够多的失望,开启新的生活. 要知道,瀑布是江河走投无路时创造的奇迹

  2. 302重定向,MVC中的Get,Post请求。

    1.在访问页遇到重定向,Get,Post跳转处理,在跳转后的页面获取访问端的IP,他们的IP是否发生变化... 2.重定向处理后获取的IP还是访问端IP,而用Get,Post请求处理后,获取的访问端I ...

  3. 轻量级表格插件Bootstrap Table。拥有强大的支持固定表头、单/复选、排序、分页、搜索及自定义表头等功能。

    Bootstrap Table是轻量级的和功能丰富的以表格的形式显示的数据,支持单选,复选框,排序,分页,显示/隐藏列,固定标题滚动表,响应式设计,Ajax加载JSON数据,点击排序的列,卡片视图等. ...

  4. C++ 利用socket实现TCP,UDP网络通讯

    学习孙鑫老师的vc++深入浅出,有一段时间了,第一次接触socket说实话有点儿看不懂,第一次基本上是看他说一句我写一句完成的,第二次在看SOCKET多少有点儿感觉了,接下来我把利用SOCKET完成T ...

  5. Web 研发模式演变

    前不久徐飞写了一篇很好的文章:Web 应用的组件化开发.本文尝试从历史发展角度,说说各种研发模式的优劣. 一.简单明快的早期时代 可称之为 Web 1.0 时代,非常适合创业型小项目,不分前后端,经常 ...

  6. spoj cot: Count on a tree 主席树

    10628. Count on a tree Problem code: COT You are given a tree with N nodes.The tree nodes are number ...

  7. iOS内存管理系列之二:自动释放与便捷方法

    有时候一个所有者创建一个对象后,会立刻将该对象的指针传递给其它所有者.这时,这个创建者不希望再拥有这个对象,但如果立刻给它发送一个release消息会导致这个对象被立刻释放掉——这样其它所有者还没有来 ...

  8. windows 版Tomcat 7.0的配置

    http://hi.baidu.com/liguohei/item/d6ea23ff904f98753d198b24 测试成功,截图 ~~~~~~~~~~~~~~~ 一.安装JDK 1.7 1.添加环 ...

  9. java rest版简单的webservice

    目前的webservice风格,rest应该是其中一种 还有种就是soap,rest是轻量级的,越来越流行.下面举一个简单例子说明下rest的用法. 1. 准备ws的jar和spring的jar,如何 ...

  10. Unicode(UTF-8, UTF-16)令人混淆的概念

    为啥需要Unicode 我们知道计算机其实挺笨的,它只认识0101这样的字符串,当然了我们看这样的01串时肯定会比较头晕的,所以很多时候为了描述简单都用十进制,十六进制,八进制表示.实际上都是等价的, ...