在Android中访问错误的原始资源

时间:2011-05-07 06:18:42

标签: android resources inputstream

我有以下代码。我的想法是在OnCreate中,我将从/ res / raw中的文本文件填充一些类别到我的数据库。

首先按行(myCatToken)对读取文件进行标记,然后将其中的每一个再次拆分以获取id和名称。

出于某种原因,我没有阅读rat.txt,而是获得了一个完全不同的文件,我不明白为什么。实际读取的文件确实存在于/ res / raw文件夹中,但其名称不同。

它似乎与它发送给readTxtFromRaw的资源有关,但是我没有看到它的错误。

由于

StringTokenizer myCatToken = new StringTokenizer(new String(readTxtFromRaw(R.raw.rat)));
while(myCatToken.hasMoreTokens())
{
    StringTokenizer myCatDataToken = new StringTokenizer(myCatToken.nextToken(), ",");
    String insertString = new String("insert into " + DATABASE_TABLE_CATEGORIES +
            " (" + KEY_CATEGORIES_CATID + ", " + KEY_CATEGORIES_NAME + ") values " + 
            " (" + myCatDataToken.nextToken() + ", '" + myCatDataToken.nextToken() + "')");
    db.execSQL(insertString);
}

作为参考,我包括我正在使用的这种方法。 mCtx是Context:

private String readTxtFromRaw(Integer rawResource) throws IOException
{
    InputStream inputStream = mCtx.getResources().openRawResource(rawResource);
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

    int i = inputStream.read();
    while (i != -1)
    {
        byteArrayOutputStream.write(i);
        i = inputStream.read();
    }
    inputStream.close();

    return byteArrayOutputStream.toString();
}

2 个答案:

答案 0 :(得分:2)

转到“Project-> Clean ...”清洁工作区。 所以整个项目将再次构建,生成的类your.package.R将被刷新。

答案 1 :(得分:1)

实际上我关闭了Eclipse并重新打开它,它运行正常。啧!