android读写SD卡封装的类

参考了网上的一些资源代码,FileUtils.java:

package com.example.filereadwrite;

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;
    }
}

调用就很简单了:

FileUtils fileUtils = new FileUtils();
System.out.println(fileUtils.loadData("GPS信息", "test.txt"));//前面是目录文件夹名称,后面是文件的名称

********************************************************************************************分割线******************************************************************************************************************

一开始以为需要使用二维数组的方式按照一定的格式写书数据到文本中,但是后来想了下,不需要合并两个一数组了,下面看代码,我是在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();
        }

    }

}

最终的效果图:

时间: 2024-08-21 06:25:05

android读写SD卡封装的类的相关文章

Android读写SD卡

SD卡的读写是我们在开发Android 应用程序过程中最常见的操作.下面介绍SD卡的读写操作方式: 1. 获取SD卡的根目录 String sdCardRoot = Environment.getExternalStorageDirectory().getAbsolutePath(); // 何问起 hovertree.com 2. 在SD卡上创建文件夹目录 /** * 在SD卡上创建目录 */ public File createDirOnSDCard(String dir) { File d

Android——数据存储(四种方式之二)读写SD卡

Android--数据存储(四种方式) 1.SharedPrefereces 只能保存一些简单的数轻量级.XML  存储文件名, 数据保存在data/data/basepackage/shared_prefs/myopt.xml中    实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default) 2.读写SD卡  SD的根目录  适用于数据流读写 实现步骤:加入读写SD卡权限

android 往sd卡中写入文件

在调用前需要判断是否有写入权限 Environment类提供了比较丰富的方法 static File getDataDirectory() 获得android data的目录. static File getDownloadCacheDirectory() 获得下载缓存目录. static File getExternalStorageDirectory() 或者外部存储媒体目录. static File getExternalStoragePublicDirectory(String type

android 操作SD卡上的文件

(1)说明:操作SD卡上的文件需要加入以下权限 在SD卡上创建和删除文件权限 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 在SD卡上写入数据的权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 在sd卡上的文件操作和我上一篇文

Eclipse中查看Android模拟器SD卡目录

有时候用到Android模拟器来模拟SD卡相关操作,在Eclipse中可以直接查看SD卡目录: 首先,新建模拟器的时候要创建SD卡,存储的大小根据需要创建: 启动模拟器,在Eclipse中打开视图窗口:Window--Show View--File Explorer: 可以看到下面有mnt目录,mnt--sdcard 就是SD卡的目录, 也就是代码中 Environment.getExternalStorageDirectory()  的目录: 这样就可以很直观的看到代码对sd卡的操作,比如新建

Android 判断SD卡是否存在及容量查询

Android 判断SD卡是否存在及容量查询的简单方法如下: 首先要在AndroidManifest.xml中增加SD卡访问权限 [html] view plaincopy <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <!-- 往SDCard写入数据权限 --> <uses-pe

Android 获取SD卡路径和判断SD卡是否存在

android获取sd卡路径方法: 不建议直接写死android sd卡的路径. public String getSDPath(){ File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState() .equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在 if (sdCardExist) { sdDir = Environment.getEx

android 删除SD卡或者手机的缓存图片和目录

public static final String TEMP_PHOTO_FILE_NAME = "temp_photo.jpg"; private static String mSdRootPath = Environment.getExternalStorageDirectory().getPath(); /** * 删除SD卡或者手机的缓存图片和目录 */ public void deleteFile() { Log.i("INFO", mSdRootPat

Android获取SD卡总容量,可用大小,机身内存总容量及可用大小

public long getSDTotalSize() { /*获取存储卡路径*/ File sdcardDir= Environment.getExternalStorageDirectory(); /*StatFs 看文件系统空间使用情况*/ StatFs statFs=new StatFs(sdcardDir.getPath()); long blockSize= statFs.getBlockSizeLong(); long totalSize=statFs.getBlockCount