Android开发之SD卡文件操作分析
作者:青蛙小王子 发布时间:2022-01-09 04:55:16
标签:Android,SD卡,文件操作
本文实例讲述了Android开发之SD卡文件操作。分享给大家供大家参考,具体如下:
前面的文章中写过直接操作手机自带存储器的程序,这次就接着上次文章协议下对sd卡的文件操作。与自带存储不同的是使用sd卡需要用户授权
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
千万要记住不能写颠倒了,不然看不到结果
之后写个方法来保存文件
public void saveToSD(String filename,String content) throws Exception{
//getExternalStorageDirectory()可以取得sd卡得路径
File f=new File(Environment.getExternalStorageDirectory(),filename);
FileOutputStream out2=new FileOutputStream(f);
out2.write(content.getBytes());
out2.close();
}
最后就可以在控制层使用这个方法了,需要对SD卡得状态作判断,取得状态可以使用Environment.getExternalStorageState()
,如果可用才能保存文件,反之就提示“sd卡不存在或不可用”
package org.lxh.file;
import org.lxh.service.FileService;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class FileActivity extends Activity {
private FileService service;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
service=new FileService(this);
Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
EditText filename=(EditText)findViewById(R.id.filename);
EditText content=(EditText)findViewById(R.id.content);
try {
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
service.saveToSD(filename.getText().toString(), content.getText().toString());
Toast.makeText(FileActivity.this, R.string.success, 1).show();
}else{
Toast.makeText(FileActivity.this, R.string.sd, 1).show();
}
//service.saveFile(filename.getText().toString(), content.getText().toString());
} catch (Exception e) {
Toast.makeText(FileActivity.this, R.string.failure, 1).show();
Log.e("FileActivity", e.getMessage());
}
}
});
}
}
下面 把strings.xml也贴出来
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, FileActivity!</string>
<string name="app_name">文件的读取</string>
<string name="filename">输入文件名称</string>
<string name="content">输入文件内容</string>
<string name="button">保存</string>
<string name="success">文件保存成功</string>
<string name="failure">文件保存失败</string>
<string name="sd">sd卡不存在或不可用</string>
</resources>
到这里就可以对SD卡进行操作了,这次的东西比较少。
希望本文所述对大家Android程序设计有所帮助。


猜你喜欢
- 首先理解数据绑定为什么要使用数据绑定基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单:但我们提交后,为了将请求信
- (1)、在程序入口处,打开登录窗口 static void Main() { Application.EnableVisualStyles(
- C++中,对于任意一个类,都会为我们提供4个默认的成员函数(如果我们不显示的去声明)——构造函数、析
- 本文实例讲述了Android编程使WebView支持HTML5 Video全屏播放的解决方法。分享给大家供大家参考,具体如下:1)需要在An
- 进程间图怎么传递图形buffer写这篇文章的目的:讲解 进程间图怎么传递图形buffer的最近研究图形缓存怎么在进程之间传递的,谷歌了所有的
- Android为我们提供了竖直方向的滚动控件GridView,但如果我们想让它水平滚动起来,就需要自己实现了。以下使用的测试数据datas集
- 现在越来越多的软件都开始使用沉浸式状态栏了,下面总结一下沉浸式状态栏的两种使用方法注意!沉浸式状态栏只支持安卓4.4及以上的版本状态栏:4.
- 为什么要限流系统在设计的时候,我们会有一个系统的预估容量,长时间超过系统能承受的TPS/QPS阈值,系统有可能会被压垮,最终导致整个服务不可
- 工作中一直都是一个人奋战一人一个项目,使用maven管理,看这个也挺好,但是总感觉没有充分发挥maven的功能,于是研究了一下这个,网上关于
- 如何给请求添加header背景:在集成了swagger的项目中,调用后台接口往往会经过一些自定义的 * ,而 * 加了token限制的话,直
- JVM与DalvikAndroid应用程序运行在Dalvik/ART虚拟机,并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。Dal
- 目录项目说明零,准备工作Github地址一,项目背景及系统结构二,持久层设计三,Model层四,DAO(Data Access Object
- //构造文件File类File f=new File(fileName);//判断是否为目录f.isDirectory();//获取目录下的
- 下标到指针之间和转换以下的程序做了什么。#include <stdio.h> int main() { int a
- 为什么要用ELKELK实际上是三个工具,Elastricsearch + Logstash + Kibana,通过ELK,用来收集日志还有进
- 嵌套查询使用Fluent Mybatis, 不用手写一行xml文件或者Mapper文件,在dao类中即可使用java api构造中比较复杂的
- 本文实例讲述了Android自定义照相机Camera出现黑屏的解决方法。分享给大家供大家参考,具体如下:对于一些手机,像HTC,当自定义Ca
- 默认spring只在发生未被捕获的runtimeexcetpion时才回滚。最笨的办法:代码级控制:TransactionAspectSup
- 发送邮件的主程序 import java.util.Properties; import common.util.Ema
- 看了Android版QQ的自定义头像功能,决定自己实现,随便熟悉下android绘制和图片处理这一块的知识。先看看效果:思路分析:这个效果可