Как назначить файл для InputStream?

Раньше я читал файл json из папки raw андроида resources,

InputStream inputStream = getResources().openRawResource(R.raw.jsonfile);

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

        int ctr;
        try {
            ctr = inputStream.read();
            while (ctr != -1) {
                byteArrayOutputStream.write(ctr);
                ctr = inputStream.read();
            }
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        JSONObject jObject = null;
        try {
            jObject = new JSONObject(
                    byteArrayOutputStream.toString());
        } catch (JSONException e) {
            e.printStackTrace();
        }

        Gson g = new Gson();

        MyList responseData = g.fromJson(jObject.toString(), MyList.class);

        if (responseData.getPeopleList().size() == 0) {
            //do something
        }

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

File fileJson = new File(getActivity().getExternalFilesDir("/folderName"), "jsonfile.json");

InputStream inputStream = null;
try {
    inputStream = new FileInputStream(fileJson);
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

но теперь responseData теперь равно нулю. Поправьте меня, пожалуйста

журнал ошибок есть,

java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference

person ChyperX    schedule 08.05.2018    source источник
comment
/folder не является допустимым значением параметра, переданного в getExternalFilesDir(). Кроме того, что означает Это не сработало так, как я ожидал? Какие у Вас симптомы?   -  person CommonsWare    schedule 08.05.2018
comment
@CommonsWare разработал мою проблему. пожалуйста, проверьте сейчас   -  person ChyperX    schedule 08.05.2018
comment
Опять же, /folder не является допустимым значением для getExternalFilesDir(). Где этот файл, который вы пытаетесь загрузить?   -  person CommonsWare    schedule 08.05.2018
comment
Из внешнего хранилища моего устройства (Android/data/myappfolder)   -  person ChyperX    schedule 08.05.2018
comment
но я использовал File fileJson = new File(getActivity().getExternalFilesDir(/folderName), jsonfile.json); fileJson .createNewFile(); чтобы создать этот файл   -  person ChyperX    schedule 08.05.2018


Ответы (1)


Шаг № 1: Поместите файл в папку, которую вы считаете Android/data/myappfolder/files/. Итак, у вас будет Android/data/myappfolder/files/jsonfile.json.

Шаг 2. Используйте File fileJson = new File(getActivity().getExternalFilesDir(null), "jsonfile.json");

person CommonsWare    schedule 08.05.2018