Доступ к неправильному исходному ресурсу в Android

#android #resources #inputstream

#Android #Ресурсы #входной поток

Вопрос:

У меня есть следующий код. Моя идея заключается в том, что в onCreate я добавлю некоторые категории из текстового файла в / res / raw в свою базу данных.

Сначала a помечает прочитанный файл строками (myCatToken), затем каждую из них я снова разделяю, чтобы получить идентификатор и имя.

По какой-то причине вместо чтения 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 — это контекст:

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

Ответ №1:

Очистите свое рабочее пространство, перейдя в «Project-> Clean …». Таким образом, весь проект будет собран заново, а сгенерированный класс your.package.R будет обновлен.

Ответ №2:

Я закрыл Eclipse и снова открыл его, и это работает.