android读写SD卡封装的类
参考了网上的一些资源代码,FileUtils.java:
- package com.example.test;
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import android.os.Environment;
- public class FileUtils {
- private String SDCardRoot;
- private String SDStateString;
- /**
- * ----------------注意权限的添加----------------
- */
- public FileUtils() {
- // 得到当前外部存储设备的目录
- SDCardRoot = Environment.getExternalStorageDirectory()
- .getAbsolutePath() + File.separator;
- SDStateString = Environment.getExternalStorageState();// 获取扩展SD卡设备状态
- }
- /**
- * 在SD卡上创建文件
- *
- * @param fileName
- * @param dir
- * 目录路径
- * @return
- * @throws IOException
- */
- public File createFileInSDCard(String fileName, String dir)
- throws IOException {
- File file = new File(SDCardRoot + dir + File.separator + fileName);
- System.out.println("file---->" + file);
- file.createNewFile();
- return file;
- }
- /**
- * 在SD卡上创建目录
- *
- * @param dir
- * 目录路径,相当于文件夹
- * @return
- */
- public File creatSDDir(String dir) {
- File dirFile = new File(SDCardRoot + dir + File.separator);
- // System.out.println(dirFile.mkdirs());
- if (!dirFile.exists()) {
- dirFile.mkdirs();
- }
- return dirFile;
- }
- /**
- * 判断SD卡上的文件夹是否存在
- *
- * @param fileName
- * 文件名称
- * @param path
- * 目录路径
- * @return
- */
- public boolean isFileExist(String fileName, String path) {
- File file = new File(SDCardRoot + path + File.separator + fileName);
- return file.exists();
- }
- /**
- * 将一个字节数组数据写入到SD卡中
- *
- * @param dir
- * 目录
- * @param fileName
- * @param bytes
- * @return
- */
- public boolean writeSDCard(String dir, String fileName, byte[] bytes) {
- if (bytes == null) {
- return false;
- }
- OutputStream outputStream = null;
- if (SDStateString.equals(android.os.Environment.MEDIA_MOUNTED)) {
- // File file = null;
- creatSDDir(dir);
- try {
- File file = createFileInSDCard(fileName, dir);
- outputStream = new BufferedOutputStream(new FileOutputStream(
- file));
- outputStream.write(bytes);
- outputStream.flush();
- return true;
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } finally {
- if (outputStream != null) {
- try {
- outputStream.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
- return false;
- }
- /**
- * 将一个InputStream里面的数据写入到SD卡中
- */
- public File write2SDFromInput(String path, String fileName,
- InputStream input) {
- File file = null;
- OutputStream output = null;
- try {
- creatSDDir(path);
- file = createFileInSDCard(fileName, path);
- output = new FileOutputStream(file);
- byte buffer[] = new byte[4 * 1024];
- int temp;
- while ((temp = input.read(buffer)) != -1) {
- output.write(buffer, 0, temp);
- }
- output.flush();
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- output.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return file;
- }
- /**
- * 读取文件
- *
- * @param dir
- * 所在目录
- * @param fileName
- * @return
- */
- public String loadData(String dir, String fileName) {
- File file = new File(SDCardRoot + dir + File.separator + fileName);
- if (!file.exists()) {
- return null;
- }
- InputStream inputStream = null;
- try {
- inputStream = new BufferedInputStream(new FileInputStream(file));
- byte[] data = new byte[inputStream.available()];
- inputStream.read(data);
- return new String(data);
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO: handle exception
- } finally {
- if (inputStream != null) {
- try {
- inputStream.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- return null;
- }
- /**2015-7-30 by chen tong
- * 使用FileWriter在文件末尾添加内容
- */
- public void appendContent(File file, String content) {
- OutputStream outputStream = null;
- try {
- outputStream = new FileOutputStream(file, true);
- byte[] enter = new byte[2];
- enter[0] = 0x0d;
- enter[1] = 0x0a;// 用于输入换行符的字节码
- String finalString = new String(enter);// 将该字节码转化为字符串类型
- content = content + finalString;
- outputStream.write(content.getBytes());
- outputStream.flush();
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } finally {
- try {
- outputStream.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
调用就很简单了:
- FileUtils fileUtils = new FileUtils();
- System.out.println(fileUtils.loadData("GPS信息", "test.txt"));//前面是目录文件夹名称,后面是文件的名称
- if (!fileUtils.isFileExist("Bluetooth温度数据", "")) {
- fileUtils.creatSDDir("Bluetooth温度数据");
- }
- try {
- File file = fileUtils.createFileInSDCard("数据1.txt", "Bluetooth温度数据");//在sd下创建"Bluetooth温度数据"文件夹,并创建数据1.txt文件
- fileUtils.appendContent(file, "ss");
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
********************************************************************************************分割线******************************************************************************************************************
一开始以为需要使用二维数组的方式按照一定的格式写书数据到文本中,但是后来想了下,不需要合并两个一数组了,下面看代码,我是在java项目中写了,很简单:
- import java.io.File;
- import java.io.FileWriter;
- import java.io.IOException;
- public class ValueWrite {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- double[] aa = {1.52,2.36,3.52,4.21};
- double[] bb = {2.81,4.35,6.32,8.96};
- int n = aa.length;
- File file = new File("/media/stroe_room/桌面/test.txt");
- try {
- FileWriter out = new FileWriter(file);
- for (int i = 0; i < n; i++) {
- out.write(aa[i]+"\t"+bb[i]+"\r\n");//“\t”表示的是TAB,而“\r\n”表示的是回车换行
- }
- out.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
最终的效果图:
android读写SD卡封装的类的更多相关文章
- Android 读写SD卡的文件
今天介绍一下Android 读写SD卡的文件,要读写SD卡上的文件,首先需要判断是否存在SD卡,方法: Environment.getExternalStorageState().equals(Env ...
- android 读写sd卡的权限设置
原文:android 读写sd卡的权限设置 在Android中,要模拟SD卡,要首先使用adb的mksdcard命令来建立SD卡的镜像,如何建立,大家上网查一下吧,应该很容易找到,这里不说这个问题. ...
- Android读写SD卡
SD卡的读写是我们在开发Android 应用程序过程中最常见的操作.下面介绍SD卡的读写操作方式: 1. 获取SD卡的根目录 String sdCardRoot = Environment.getEx ...
- android 读写SD卡文件
参考: http://www.oschina.net/code/snippet_176897_7336#11699 写文件: private void SavedToText(Context cont ...
- android学习笔记47——读写SD卡上的文件
读写SD卡上的文件 通过Context的openFileInput.openFileOutput来打开文件输入流.输出流时,程序打开的都是应用程序的数据文件夹里的文件,其存储的文件大小可能都比较有限- ...
- Android 常见SD卡操作
目录 Android 常见SD卡操作 Android 常见SD卡操作 参考 https://blog.csdn.net/mad1989/article/details/37568667. [0.] E ...
- Android 检测SD卡应用
Android 检测SD卡应用 // Environment.MEDIA_MOUNTED // sd卡在手机上正常使用状态 // ...
- android 获取sd卡根目录
dir:/storage/emulated/0 也就是 sdcard目录 ====== android 获取sd卡根目录 public String getSDPath(){ File ...
- Android获取SD卡路径及SDCard内存的方法
这篇文章主要介绍了Android获取SD卡路径及SDCard内存的方法,较为详细的分析了Android针对SD卡操作所涉及的类及其具体函数功能,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了A ...
随机推荐
- window下rails4.1 发生TZInfo::DataSourceNotFound 错误 - smallbottle
在官网上学习rails 4.1 ,启动rails server之后发生了如下错误 $ rails server Booting WEBrick Rails 4.1.0 application star ...
- Eclipse调试Java程序技巧
主要步骤.Debug As"->"Java Application".双击设置断点,F5是跳进,F6是执行下一步,F7是跳出 在看这篇文章前,我推荐你看一下Ecli ...
- 数据库 连接(join)
转自http://www.cnblogs.com/caozengling/p/5318696.html 数据库中飞内连接,自然连接,外连接 数据库中的连接join氛围内连接,自然连接,外连接,外连接又 ...
- 超级台阶 (NYOJ—76)
很简单的高中数学题,写出来主要是提醒自己,写完递推公式(尤其是公式)一定要检查多遍. #include<stdio.h> #include<string.h> int M; i ...
- 《Linux内核设计与实现》读书笔记(二)- 内核开发的准备
在尝试内核开发之前,需要对内核有个整体的了解. 主要内容: 获取内核源码 内核源码的结构 编译内核的方法 内核开发的特点 1. 获取内核源码 内核是开源的,所有获取源码特别方便,参照以下的网址,可以通 ...
- lable对picbox透明
为了登录美观一些,就在窗体上加了个picbox.并且充满了整个窗体. 往上面放了几个lable,把lable属性设置Transparent.本想着lable不会有底色,实际上有个底,很难看. 解决办法 ...
- C#回调函数的简单讲解与应用例子
using System; namespace CallBackTest{ class Program //用户层,执行输入等操作 { static void Main(string[] args) ...
- jexus处理静态文件(处理后缀)
AspNet_Exts=txt就能把你指定的扩展名交给asp.net处理.同理,可以写很多个,AspNet_Exts=txt,htm,html
- (JAVA)String类型的逻辑语句编译
项目中遇到了动态配置条件触发相应事件的需求,需要根据String类型的逻辑语句,以及动态获取的数据,计算数据对应的结果,java实现.解决思路及代码实现如下,有需要的同学请自取. 一.需求提取 根据需 ...
- [WIP]php入門
创建: 2019/06/19 安装 MAMP 变量与运算符 php标签 <?php ... ?> <?php ... ?> ● 在文件最后的 ?> 通常省略, ...