Открытие textFile с помощью AssetManager и назначение его для InputStream - PullRequest
0 голосов
/ 02 марта 2019

В принципе, я думаю, что это может быть проблема структуры проекта, так как я не уверен, куда поместить текстовый файл, я создал каталог ресурсов и поместил в него папку с текстами, в которую поместили myawesometext.txt.

Я получаю сообщение об ошибке: вызывается исключение, что он не может найти файл.

Я думал, что это может быть связано с разрешениями, но не могу найти разрешения, связанные с ним, поскольку это не внешнее хранилище..

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

класс:

public class AssetsTest extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TextView textView = new TextView(this);
    setContentView(textView);
    AssetManager assetManager = getAssets();
    InputStream inputStream = null;
    try {
        inputStream = assetManager.open("texts/myawesometext");
        String text = loadTextFile(inputStream);
        textView.setText(text);
    } catch (IOException e) { textView.setText("Couldn't load file");
    } finally {
        if (inputStream != null)
            try { inputStream.close();
            } catch (IOException e) { textView.setText("Couldn't close file");
            } }
}
    public String loadTextFile(InputStream inputStream) throws IOException { ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); byte[] bytes = new byte[4096];
        int len = 0;
        while ((len = inputStream.read(bytes)) > 0) byteStream.write(bytes, 0, len);
        return new String(byteStream.toByteArray(), "UTF8"); }
}

location of file

Заранее спасибо ... Бен

1 Ответ

0 голосов
/ 03 марта 2019

Неправильное расположение папки с активами, а также неверный код.Выполните следующие действия.

Сначала переместите текущую папку assets в src/main.

screenshot

Во-вторых, изменитеэта строка в вашем коде от

inputStream = assetManager.open("texts/myawesometext");

до

inputStream = assetManager.open("texts/myawesometext.txt");
...