安卓将数据存储到文件的操作


package gpatmobile.tunion.com.mytest;

import android.content.Context;
import android.text.TextUtils;
import android.util.Log;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;

public class FilesUtil {
    /**
     * 保存文件内容MODE_PRIVATE覆盖
     *
     * @param c
     * @param fileName 文件名称
     * @param content  内容
     */
    public static void writeFiles(Context c, String fileName, String content)
            throws Exception {
        // 打开文件获取输出流,文件不存在则自动创建
        FileOutputStream fos = c.openFileOutput(fileName, Context.MODE_PRIVATE);
        fos.write(content.getBytes());
        fos.close();
    }
    /**
     * 保存文件内容MODE_APPEND追加
     *
     * @param c
     * @param fileName 文件名称
     * @param content  内容
     */
    public static void writeAddFiles(Context c, String fileName, String content)
            throws Exception {
        // 打开文件获取输出流,文件不存在则自动创建
        FileOutputStream fos = c.openFileOutput(fileName, Context.MODE_APPEND);
        fos.write(content.getBytes());
        fos.close();
    }
    /**
     * 读取文件内容
     *
     * @param c
     * @param fileName 文件名称
     * @return 返回文件内容
     */
    public static String readFiles(Context c, String fileName) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        FileInputStream fis = null;
        String content = "";
        try {
//			if(!fileIsExists(fileName))
//			{
//				Log.i("files", "not found files"+fileName);
//				return "";
//			}


            fis = c.openFileInput(fileName);

            byte[] buffer = new byte[1024];
            int len = 0;
            while ((len = fis.read(buffer)) != -1) {
                baos.write(buffer, 0, len);
            }
            content = baos.toString();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            Log.i("files error", "not found files" + fileName);
            e.printStackTrace();
            return "";
        } finally {
            try {
                if (null != fis)
                    fis.close();
                if (null != baos)
                    baos.close();

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }


        return content;
    }

    public static boolean fileIsExists(String strFile) {
        try {
            File f = new File(strFile);
            if (!f.exists()) {
                return false;
            }

        } catch (Exception e) {
            return false;
        }

        return true;
    }


    public static void writeFileSdcardFile(String fileName, String content) {
        if (TextUtils.isEmpty(fileName)) {
            return;
        }
        try {
            content = "[" + TimeUtil.getCurrentDateString() + "]" + "  " + content;
            File logFile = new File(fileName);
            Log.i("fileName", fileName);
            if (!logFile.exists()) {
                logFile.createNewFile();
            }
            FileWriter writer = new FileWriter(fileName, true);
            writer.write(content + "\n");
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void writeFileSdcardFileSHIMING(String fileName, String content) {
        try {
            content = "[" + TimeUtil.getCurrentDateString() + "]" + "  " + content;
            File logFile = new File(fileName);
            Log.i("fileName", fileName);
            if (!logFile.exists()) {
                logFile.createNewFile();
            }
            FileWriter writer = new FileWriter(fileName, true);
            writer.write(content + "\n");
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static boolean deleteFile(String fileName) {
        File file = new File(fileName);
        // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
        if (file.exists() && file.isFile()) {
            if (file.delete()) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }
}

存储内容

Android中的文件存储机制是一种基本的存储数据的方式,其不对数据进行任何格式化的处理,所以这种方式适用于存储一些简单的文本数据或者二进制数据;

Context中提供一个openFileOutput()的方法,将数据存储在指定的文件下;该方法实现传入两个数据参数,

  • 其中一个是参数是文件名,注意这里的文件名不可以包含路径,它的默认讯储存位置是、data/datta/<package>files/下面 的,
  • 第二个是文件的操作模式,其数值有两种,默认的是MODE_PRIVATE表示当指定的文件名相同时,写入的数据会覆盖源文件中的内容;另一个是MODE_APPEND表示的是如果文件夹下存在相同的文件名,则是往文件里追加内容;其实本来是的操作,模式有四个,其他两个MODE_WORLD_READABLE、MODE_WORLD_WRITEABLE,由于这两个模式允许其他的程序操作文件,所以在以前的版本就取消了;
     

取出内容

类似于将数据存储到文件中,Context 类中还提供了一个 openFileInput() 方法,用于从文件中读取数据

openFileInput() 方法只接收一个参数,即要读取的文件名,然后系统会自动到 /data/data/<包名>/files/ 目录下去加载这个文件,并返回一个 FileInputStream 对象

实例:

        try {
            FilesUtil.writeFiles(MainActivity.this, "yhl.txt", "abc");
            FilesUtil.writeFiles(MainActivity.this, "yhll.txt", "abcd");
            Log.e("yhl", FilesUtil.readFiles(MainActivity.this, "yhl.txt"));
            Log.e("yhl", FilesUtil.readFiles(MainActivity.this, "yhll.txt"));
            Log.e("yhl", "onCreate: " + getApplicationContext().getFilesDir().toString());
            FilesUtil.deleteFile(getApplicationContext().getFilesDir().toString() + "/" + "yhl.txt");
            Log.e("yhl", FilesUtil.readFiles(MainActivity.this, "yhl.txt"));
            Log.e("yhl", FilesUtil.readFiles(MainActivity.this, "yhll.txt"));
            FilesUtil.writeAddFiles(MainActivity.this, "yhll.txt", "abcd");
            Log.e("yhl", FilesUtil.readFiles(MainActivity.this, "yhll.txt"));
        } catch (Exception e) {
            e.printStackTrace();
        }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值