为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. 飞鱼相册笔记(1)----外置SD卡文件夹名称不区分大小写

    飞鱼相册笔记(1)----外置SD卡文件夹名称不区分大小写 在飞鱼相册发布的第一个测试版中,很多用户表示无法查看外置SD卡中的照片.乍一听觉得加个外置SD卡的根目录,然后在扫描所有图片的时候把这个根目 ...

  2. 读取SD卡文件夹下的MP3文件和播放MP3文件

    首先获取SD卡path路径下的所有的MP3文件,并将文件名和文件大小存入List数组(此代码定义在FileUtils类中): /** * 读取目录中的Mp3文件的名字和大小 */ public Lis ...

  3. Android测试读写sd卡文件与写sd卡文件耗时

    测试从sd卡读1k大小的文件,再写1k大小的文件,由于处理耗时很短,所以循环500次,查看耗时:测试写1k大小的文件,直接在内存构造一个1k的buffer,将这个buffer直接写到文件,同样循环50 ...

  4. sd卡文件操作

    1. 得到存储设备的目录:/SDCARD(一般情况下) SDPATH=Environment.getExternalStorageDirectory()+"/"; 2. 判断SD卡 ...

  5. Android数据存储之SD卡文件操作

    赶上智能手机刚问世时有幸用过的小伙伴都知道,那时候的Android系统是把我们自己买的SD卡作为外部存储的,但是不知道从哪天开始,SD卡就被固化到智能手机的内部了,但是我们仍然把它称为外部存储.我想A ...

  6. Android监听SD卡文件变化

    今天再一次使用到FileObserver,上一次使用还是很久之前了.总结一下FileObserver里留的一些“坑”   1.FileObserver只能监听一个目录下的“一级”子文件,也就是说Fil ...

  7. Android 最简单的SD卡文件遍历程序

    package com.wenhao.test.sddemo; import java.io.File; import android.app.Activity; import android.os. ...

  8. Android得到SD卡文件夹大小以及删除文件夹操作

    float cacheSize = dirSize(new File(Environment.getExternalStorageDirectory() + AppConstants.APP_CACH ...

  9. 单元测试+内存、SD卡、SP读写+XmlPullParser

    测试: 测试的相关概念 1.根据是否知道源代码分类: 黑盒测试: a - b - c 边值测试 测试逻辑业务 白盒测试: 根据源代码写测试方法 或者 测试用例; 2.根据测试的粒度分类: 方法测试:写 ...

随机推荐

  1. P2463 [SDOI2008]Sandy的卡片[差分+串拼接后缀数组]

    P2463 [SDOI2008]Sandy的卡片 套路都差不多,都是差分后二分答案找lcp.只是这题要把多个串拼接起来成为一个大串,中间用某些值域中没有的数字相隔(最好间隔符都不一样想想为什么),排序 ...

  2. 【Lintcode】077.Longest Common Subsequence

    题目: Given two strings, find the longest common subsequence (LCS). Your code should return the length ...

  3. 【Lintcode】098.Sort List

    题目: Sort a linked list in O(n log n) time using constant space complexity. Example Given 1->3-> ...

  4. 制作HUD

    转自:http://www.cnblogs.com/NEOCSL/archive/2012/03/05/2380341.html 1. HUD不仅仅能提供基本的显示信息给玩家,例如玩家的生命值等.在I ...

  5. socket函数的使用方法(参数详解)

    socket函数的使用方法如下: int socket(int domain, int type, int protocol); 在参数表中,domain指定使用何种的地址类型,比较常用的有: PF_ ...

  6. UVaLive 4731 Cellular Network (期望DP)

    题意:手机在蜂窝网络中的定位是一个基本问题,假设蜂窝网络已经得知手机处于c1,c2,,,cn这些区域中的一个,最简单的方法是同时在这些区域中寻找手机, 但这样做很浪费带宽,由于蜂窝网络中可以得知手机在 ...

  7. 如何阻止冒泡&&浏览器默认行为

    摘要 很多同学对阻止事件冒泡和阻止事件默认行为容易混淆,项目中因为一些原因也需要阻止浏览器的一些默认行为,这里就简单总结一下. 阻止事件冒泡 什么是事件冒泡这里就不再赘述了,网上的文章一大把,这里就简 ...

  8. html页面渲染过程

    1.解析html文件,创建DOM树 自上而下解析,遇到任何样式(link.style)和脚本(script)都会阻塞 1)css加载不会阻塞html文件的解析,但会阻塞dom的渲染 2)css加载会阻 ...

  9. UnityShader实例09:Stencil Buffer&Stencil Test

    http://blog.csdn.net/u011047171/article/details/46928463 Stencil Buffer&Stencil Test 在开始前先吐槽下uni ...

  10. codeforces1009G Allowed Letters【贪心+hall定理】

    因为是字典序所以贪心选当前能选的最小的,所以问题就在于怎么快速计算当前这个位置能不能选枚举的字母 重排之后的序列是可以和原序列完美匹配的,而完美匹配需要满足hall定理,也就是左边任意k个集合一定和右 ...