Android 之 将RAW资源文件写入SD卡工具类

package com.sun.coptfiletosd;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import android.util.Log;

/**
* 工具类 , 用于将RAW 目录下的文件写入到数据库中
*
* @author Administrator
*
*/
public class SDUtils {

private String file; // 设置文件存放路径
private String fileName; // 存放文件名称
private Context context; // 获取到Context 上下文
private int rawid; // 资源文件ID ,需要COPY 的文件
private String DATABASE_PATH = "";
private String DATABASE_NAME = "";

public String getFile() {
return file;
}

public void setFile(String file) {
this.file = file;
this.DATABASE_PATH = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/" + file;
}

public String getFileName() {
return fileName;
}

public void setFileName(String fileName) {
this.fileName = fileName;
this.DATABASE_NAME = fileName;
}

public int getRawid() {
return rawid;
}

public void setRawid(int rawid) {
this.rawid = rawid;
}

public SDUtils() {
}

/**
*
* @param file
* 文件夹例如: aa/bb
* @param fileName
* 文件名
* @param context
* 上下文
* @param rawid
* 资源ID
*/
public SDUtils(String file, String fileName, Context context, int rawid) {
super();
this.file = file;
this.fileName = fileName;
this.context = context;
this.rawid = rawid;
this.DATABASE_PATH = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/" + file;
this.DATABASE_NAME = fileName;
}

/**
* 将文件复制到SD卡,并返回该文件对应的数据库对象
*
* @return
* @throws IOException
*/
public SQLiteDatabase getSQLiteDatabase() throws IOException {

// 首先判断该目录下的文件夹是否存在
File dir = new File(DATABASE_PATH);
String filename1 = DATABASE_PATH + "/" + DATABASE_NAME;
if (!dir.exists()) {
// 文件夹不存在 , 则创建文件夹
dir.mkdirs();
}

// 判断目标文件是否存在
File file1 = new File(dir, DATABASE_NAME);

if (!file1.exists()) {
Log.i("msg", "没有文件,开始创建");
file1.createNewFile(); // 创建文件

}

Log.i("msg", "准备开始进行文件的复制");
// 开始进行文件的复制
InputStream input = context.getResources().openRawResource(rawid); // 获取资源文件raw
// 标号
try {

FileOutputStream out = new FileOutputStream(file1); // 文件输出流、用于将文件写到SD卡中
// -- 从内存出去
byte[] buffer = new byte[1024];
int len = 0;
while ((len = (input.read(buffer))) != -1) { // 读取文件,-- 进到内存

out.write(buffer, 0, len); // 写入数据 ,-- 从内存出
}

input.close();
out.close(); // 关闭流

SQLiteDatabase sqlitDatabase = SQLiteDatabase.openOrCreateDatabase(
filename1, null);
return sqlitDatabase;
} catch (Exception e) {

e.printStackTrace();
}

return null;

}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值