Открытие файла из папки R.raw

Я пытаюсь открыть файл из моей папки R.raw с помощью inputtream. Но я всегда получал эту ошибку:

'The method getResources() is undefined for the type Wordchecker'

и когда я попытался использовать быстрое исправление, появляется другая ошибка.

'The method openRawResource(int) is undefined for the type Object'...

Вот мой код:

public class Wordchecker {
    public static void main(String arg[]){
        HashSet <String> newset = new HashSet <String>();
        try{
            //opening file of words
            InputStream is = getResources().openRawResource(R.raw.wordlist);
            DataInputStream in = new DataInputStream(is);  
            BufferedReader br = new BufferedReader(new InputStreamReader(in));  
            String strLine;

            //reading file of words
            while ((strLine = br.readLine()) != null) {  
                newset.add(strLine);  //adding word to the hash set newset
            }
            in.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    private static Object getResources() {
        // TODO Auto-generated method stub
        return null;
    }
}

2 ответа

Где-то должна быть ссылка на Context, поскольку getResources() является методом в Context.

Возьмите пример этого в вашем конструкторе:

public class Wordchecker {
    Context mContext;

    public Wordchecker(Context c) {
        mContext = c;
        init()
    }

    public void init() {
        HashSet <String> newset = new HashSet <String>();
        try{
            //opening file of words
            InputStream is = getResources().openRawResource(R.raw.wordlist);
            DataInputStream in = new DataInputStream(is);  
            BufferedReader br = new BufferedReader(new InputStreamReader(in));  
            String strLine;
            //reading file of words
            while ((strLine = br.readLine()) != null) {  
                newset.add(strLine);  //adding word to the hash set newset
            }
            in.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

А затем создайте объект этого класса из Activity или Service или всего, что расширяет Context, используя:

Wordchecker wordchecker = new Wordchecker(this);

Убедитесь, что wordchecker = new Wordchecker(this); в onCreate() или после

Ваша проблема здесь в том, что вы не продлеваете активность. Вы не можете позвонить getResources() потому что его не существует

Без класса Activity вы не можете использовать getResources(), пока не вставите контекст в качестве параметра.

Другие вопросы по тегам