Проблема с чтением файла из папки активов в Android - PullRequest
2 голосов
/ 13 марта 2012

Этот вопрос касается этого .Поскольку это конкретный вопрос, я перенес этот вопрос сам по себе.Я попытался создать текстовый файл "foo.txt", прочитав его в своей деятельности, выполнив:

File file = new File("/assets/foo.txt");
if ( file.exists() ){
    txtView.setText("Exists");
}
else{
    txtView.setText("Does not exist");
}

Файл "foo.txt" находится в моей папке ресурсов, и я подтвердил, что онсуществует в ОС.Мой TextView всегда получает текст «Не существует» из кода выше.Я также попытался перейти на

File file = new File("/assets/foo.txt");
Scanner in = new Scanner(file);

, но это приводит к следующей ошибке inline : «Необработанный тип исключения FileNotFoundException».Затем Eclipse предлагает использовать try / catch, который устраняет ошибку, но затем тоже не работает должным образом.

Я также попытался установить для папки с ресурсами значение «Использовать как исходную папку», но это нелюбая разница.Я также попытался использовать необработанную папку, так как несколько человек предлагают бесполезно.У меня нет выбора, и мне действительно нужна помощь для этого.Должно быть легко ...

Другая попытка - перейти

AssetManager assetManager = getResources().getAssets();
InputStream is = assetManager.open("assets/foo.txt");

, но это приводит к ошибке inline во второй строке: «Необработанное исключение типа IOException».

Ответы [ 3 ]

13 голосов
/ 13 марта 2012

Я в этом случае с CommonsWare (это безопасная сторона :)), но оно должно быть:

AssetManager assetManager = getResources().getAssets();
InputStream inputStream = null;

    try {
        inputStream = assetManager.open("foo.txt");
            if ( inputStream != null)
                Log.d(TAG, "It worked!");
        } catch (IOException e) {
            e.printStackTrace();
        }

Не использовать InputStream is = assetManager.open("assets/foo.txt");

2 голосов
/ 13 марта 2012

попробуйте это:

    private AssetManager am;
     am=getAssets();

     InputStream inputStream = null ;  
        try   
        {  
            inputStream = am.open("read.txt");  
        }   
        catch (IOException e) {}  
2 голосов
/ 13 марта 2012

У вас нет доступа к assets/ во время выполнения, используя File.Вы получаете доступ к assets/ во время выполнения, используя AssetManager, который вы можете получить через getResources().getAssets().

...