关闭

android asserts文件读出到 /data/data/pkg/目录下

标签: asserts android 初始文件
763人阅读 评论(0) 收藏 举报
分类:


1,判断文件在包下是否存在
private boolean isFileExisted() {
if (new File("/data/data/" + this.getPackageName()
+ "/command/command.dic").exists()) {
return true;
}
return false;
}
2,创建哪些文件;(command.dic,command.lm以及后面几个文件都在我eclipse工程的assert目录下,2.2工程单个文件不能超过1M,2.2以上无大小限制)
private void createCommandFile() {
Log.i(TAG, "createFile()...");
String strPath = "/data/data/" + this.getPackageName() + "/";
String strDict = "command.dic";
// String strDict = "./command/command.vocab";
String strLanguageModel = "command.lm";

// createDir(strPath);
writeIntoFile(strDict, strDict);
writeIntoFile(strLanguageModel, strLanguageModel);
writeIntoFile("feat.params", "feat.params");
writeIntoFile("mdef", "mdef");
writeIntoFile("means", "means");
writeIntoFile("noisedict", "noisedict");
writeIntoFile("sendump", "sendump");
writeIntoFile("transition_matrices", "transition_matrices");
writeIntoFile("variances", "variances");
}

3,具体创建文件的函数
private void writeIntoFile(String strSrc, String strDest) {
Log.i(TAG, "writeIntoFile()...");
try {
FileOutputStream out = openFileOutput(strDest, MODE_WORLD_WRITEABLE);
InputStream in = getResources().getAssets().open(strSrc);
byte[] buffer = new byte[1024];
int readBuffers = 0;
while ((readBuffers = in.read(buffer)) != -1) {
out.write(buffer);
}
in.close();
out.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
Log.i(TAG, "writeInfoFile()...");

}

4,在初始化的时候调用

if (!isFileExisted() )

{createCommandFiles();}

5,问题

1)第二步创建的文件无论创不创建文件夹的都只能在/data/data/包名/files/目录下,这点我很纳闷!

2 )创建出来的文件是正确的(已验证),但是貌似没有都写权限;

如果谁解决了上面两条,本着共享知识的精神告诉鄙人一声,感激不尽啊!

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:44434次
    • 积分:811
    • 等级:
    • 排名:千里之外
    • 原创:31篇
    • 转载:21篇
    • 译文:0篇
    • 评论:8条
    最新评论