2015-04-07 2 views
-1
String LoadCity (int ID) { 
    //Here the magic starts: we import text file that we need 
    int resId = getResources().getIdentifier("c" + Integer.toString(ID), "raw", getPackageName()); 
    InputStream is = getResources().openRawResource(resId); 

    InputStreamReader isr = new InputStreamReader(is); 
    BufferedReader buffreader = new BufferedReader(isr); 

    String line; 
    StringBuilder content = new StringBuilder(); 
    try { 
     while ((line = buffreader.readLine()) != null) { 
      content.append(line); 
      content.append("\n"); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    String toSplit = content.toString(); 
    return toSplit; 
} 

Ошибка

на com.superprower.aroundtheworld.gameactivity.LoadCity (gameactivity.java:88)

Очки здесь :.

INT Resid = GetResources() getIdentifier ("с" + Integer.toString (ID), "сырой", getPackageName()); InputStream is = getResources(). OpenRawResource (resId);

Я хочу импортировать файл cN, где N - это идентификатор, конвертировать его в строку и возвращать. Файл c1/c2/c3/c4 существует. Их не TXT. Кажется, я становлюсь resId как-то не так. Где моя ошибка?

ответ

0

попробовать, как этот

String uri = "raw/"+"c"+ID; 
// int res = R.raw.c; 
int imageResource = getResources().getIdentifier(uri, null, getPackageName()); 
+0

Могу ли я преобразовать его во что-то вроде String uri = "raw/c" + Integer.toString (ID); ? Кроме того, мне нужен текстовый файл, а не изображение. Есть текстовые файлы, содержащие некоторые данные, я хочу импортировать их в строку и затем разделить. Я знаю, что могу использовать БД, но я слишком ленив, и я не могу переделать половину своего проекта. – SuperPrower

+0

есть. URI - это имя ресурса. –

+0

Не поможет. По-прежнему ошибка на 'InputStream is = getResources(). OpenRawResource (resId);', где resId - 'int resId = getResources(). GetIdentifier (uri, null, getPackageName());' – SuperPrower

0

Может быть, вам нужны коды, подобные этим:

private final int getIdByNames(Context ctx, String resType, String fileName) { 
    if (ctx == null || resType == null || fileName == null || "".equals(resType) || "".equals(fileName)) { 
     return 0; 
    } 
    int id = ctx.getResources().getIdentifier(fileName, resType, ctx.getPackageName()); 
    return id; 
} 

И эти:

public final int getRawIdByName(Context ctx, String fileName) { 
    return getIdByNames(ctx, "raw", fileName); 
} 

Тогда, возможно, вам необходимо позвонить:

int resId = ResUtil.getRawIdByName(yourContext, "c1"); 
InputStream is = getResources().openRawResource(resId);