安卓下对SD卡文件的读写
为SD下的操作文件,封装了一些类:
package ujs.javawritedata; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream; import org.apache.http.util.EncodingUtils; import android.content.Context; public class FileWrite {
private Context context; public FileWrite(Context c) {
this.context = c;
} // 读取sd中的文件
public String readSDCardFile(String path) throws IOException {
File file = new File(path);
FileInputStream fis = new FileInputStream(file);
String result = streamRead(fis);
return result;
} // 在res目录下建立一个raw资源文件夹,这里的文件只能读不能写入。。。
public String readRawFile(int fileId) throws IOException {
// 取得输入流
InputStream is = context.getResources().openRawResource(fileId);
String result = streamRead(is);// 返回一个字符串
return result;
} private String streamRead(InputStream is) throws IOException {
int buffersize = is.available();// 取得输入流的字节长度
byte buffer[] = new byte[buffersize];
is.read(buffer);// 将数据读入数组
is.close();// 读取完毕后要关闭流。
String result = EncodingUtils.getString(buffer, "UTF-8");// 设置取得的数据编码,防止乱码
return result;
} // 在assets文件夹下的文件,同样是只能读取不能写入
public String readAssetsFile(String filename) throws IOException {
// 取得输入流
InputStream is = context.getResources().getAssets().open(filename);
String result = streamRead(is);// 返回一个字符串
return result;
} // 往sd卡中写入文件
public void writeSDCardFile(String path, byte[] buffer) throws IOException {
File file = new File(path);
FileOutputStream fos = new FileOutputStream(file);
fos.write(buffer);// 写入buffer数组。如果想写入一些简单的字符,可以将String.getBytes()再写入文件;
fos.close();
} // 将文件写入应用的data/data的files目录下
public void writeDateFile(String fileName, byte[] buffer) throws Exception {
byte[] buf = fileName.getBytes("iso8859-1");
fileName = new String(buf, "utf-8");
// Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
// Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
// Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
// MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
// 如果希望文件被其他应用读和写,可以传入:
// openFileOutput("output.txt", Context.MODE_WORLD_READABLE +
// Context.MODE_WORLD_WRITEABLE);
FileOutputStream fos = context.openFileOutput(fileName,
Context.MODE_APPEND);// 添加在文件后面
fos.write(buffer);
fos.close();
} // 读取应用的data/data的files目录下文件数据
public String readDateFile(String fileName) throws Exception {
FileInputStream fis = context.openFileInput(fileName);
String result = streamRead(fis);// 返回一个字符串
return result;
}
}
在MainActivity.java中的调用:
package ujs.javawritedata; import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream; import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.MenuItem; public class MainActivity extends Activity {
private String string = "i am a bad boy!"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String SDPATH = Environment.getExternalStorageDirectory() + "/test.txt";
FileWrite fileWrite = new FileWrite(this);
try {
fileWrite.writeSDCardFile(SDPATH, string.getBytes());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
} /**看看自己写的和别人写的基本上就是一样,所以没什么技术含量
* 向sdcard中写入文件
*
* @param filename
* 文件名
* @param content
* 文件内容
*/
public void saveSDCard(String filename, String content) throws Exception {
File file = new File(Environment.getExternalStorageDirectory(),
filename);
OutputStream out = new FileOutputStream(file);
out.write(content.getBytes());
out.close();
}
}
saveSDCard()函数(自己摸索写的)发现和前者封装的是一样的,所以这个读写SD卡其实也挺简单的(⊙_⊙)!
安卓下对SD卡文件的读写的更多相关文章
- 飞鱼相册笔记(1)----外置SD卡文件夹名称不区分大小写
飞鱼相册笔记(1)----外置SD卡文件夹名称不区分大小写 在飞鱼相册发布的第一个测试版中,很多用户表示无法查看外置SD卡中的照片.乍一听觉得加个外置SD卡的根目录,然后在扫描所有图片的时候把这个根目 ...
- 读取SD卡文件夹下的MP3文件和播放MP3文件
首先获取SD卡path路径下的所有的MP3文件,并将文件名和文件大小存入List数组(此代码定义在FileUtils类中): /** * 读取目录中的Mp3文件的名字和大小 */ public Lis ...
- Android测试读写sd卡文件与写sd卡文件耗时
测试从sd卡读1k大小的文件,再写1k大小的文件,由于处理耗时很短,所以循环500次,查看耗时:测试写1k大小的文件,直接在内存构造一个1k的buffer,将这个buffer直接写到文件,同样循环50 ...
- sd卡文件操作
1. 得到存储设备的目录:/SDCARD(一般情况下) SDPATH=Environment.getExternalStorageDirectory()+"/"; 2. 判断SD卡 ...
- Android数据存储之SD卡文件操作
赶上智能手机刚问世时有幸用过的小伙伴都知道,那时候的Android系统是把我们自己买的SD卡作为外部存储的,但是不知道从哪天开始,SD卡就被固化到智能手机的内部了,但是我们仍然把它称为外部存储.我想A ...
- Android监听SD卡文件变化
今天再一次使用到FileObserver,上一次使用还是很久之前了.总结一下FileObserver里留的一些“坑” 1.FileObserver只能监听一个目录下的“一级”子文件,也就是说Fil ...
- Android 最简单的SD卡文件遍历程序
package com.wenhao.test.sddemo; import java.io.File; import android.app.Activity; import android.os. ...
- Android得到SD卡文件夹大小以及删除文件夹操作
float cacheSize = dirSize(new File(Environment.getExternalStorageDirectory() + AppConstants.APP_CACH ...
- 单元测试+内存、SD卡、SP读写+XmlPullParser
测试: 测试的相关概念 1.根据是否知道源代码分类: 黑盒测试: a - b - c 边值测试 测试逻辑业务 白盒测试: 根据源代码写测试方法 或者 测试用例; 2.根据测试的粒度分类: 方法测试:写 ...
随机推荐
- poj3662Telephone Lines——二分+最短路
题目:http://poj.org/problem?id=3662 二分答案找出符合条件的最小长度: 假设了每个长度后,以这个为标准对每条边赋值,0为小于等于,1为大于,然后按这个值来跑最短路,在看看 ...
- POJ-3187
Backward Digit Sums Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7634 Accepted: 43 ...
- Django 框架
MVC 框架和MTV框架 (了解即可) MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...
- SQL 截取时间
-- 获取系统时间 print getdate() -- 获取3天前的时间 print dateadd(day, -3 , getdate()) -- 获取3天后的时间 print dateadd(d ...
- Linux 之添加系统环境变量
PATH 值是一系列目录,当执行命令时,linux就在这些目录下查找,其格式为: PATH=$PATH:<PATH1>:<PATH2>:<PATH3>:------ ...
- SAS批量导出sas7bdata至excel
/*创建输出excel的宏*/ %macro export(inlib,intbl,outpath,outfile); proc export data=&inlib..&intbl ...
- Unite 2017 | Unity引擎发展四大方向
Unite 2017 Shanghai已落幕,今天为大家分享本次大会备受关注的Keynote主题演讲.本次大会Keynote主题演讲聚焦了Unity全球领导团队,包括Unity创始人David Hel ...
- hdu1520 Anniversary party
Anniversary party HDU - 1520 题意:你要举行一个晚会,所有人的关系可以构成一棵树,要求上下级关系的人不能同时出现,每一个人都有一个rating值,要求使整个晚会的ratin ...
- crm项目整理概要
一.开发背景 由于公司人员的增多,原来通过excel表格存取方式过于繁琐,而且对于公司人员的调配和绩效考核等不能做到精确处理,所以开发crm系统,开始开发只是针对销售人员和客户,后面陆续加上一些操作, ...
- IDEAL基于maven创建spark程序
今天创建spark项目遇到一个奇葩问题,困扰了好久,特此记录一下. 1.按照截图创建spark项目 2.项目创建好后,运行报错: Error:scalac: error while loading J ...