Как загрузить текстовый файл из хранилища Firebase и манипулировать содержащимися в нем данными?

#android #firebase #firebase-storage #filenotfoundexception

#Android #firebase #firebase-хранилище #исключение filenotfoundexception

Вопрос:

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

Ошибка, которую я получаю:

 W/System.err: java.io.FileNotFoundException:
 /data/user/0/com.ritesh.excelfiletest/files/text.txt
  

Код:

 private void download() {
        StorageReference sr = FirebaseStorage.getInstance().getReference().child("text.txt");
        Log.d("keys tasksnapshot anf", sr.toString());


        try {
            File localFile = File.createTempFile("text", "txt");

            sr.getFile(localFile)
                    .addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
                            Log.d("keys: tasksnapshot", taskSnapshot.toString());
                        }
                    });
        } catch (Exception e) {
            e.printStackTrace();
        }

        openFile();
}

private void openFile() {
    FileInputStream fis = null;
    try {
        fis = openFileInput("text.txt");
        InputStreamReader isr = new InputStreamReader(fis);
        BufferedReader bufferedReader = new BufferedReader(isr);
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            sb.append(line);
        }


        TextView textView = findViewById(R.id.tv);
        textView.setText(sb.toString());

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}
  

Комментарии:

1. Попробуйте открыть файл, используя его полный путь. Для того, чтобы получить путь к файлу, я думаю, вы можете использовать sr.getPath() функцию

Ответ №1:

Я не нашел решения, как хотел, но я немного изменил код. Вот оно:

Я также был бы признателен, если бы кто-нибудь сказал мне, почему «File» выше не сработало.

 private void download(String s) {
        StorageReference sr = FirebaseStorage.getInstance().getReference().child("text.txt");


        try {
            File localFile = File.createTempFile("text", "txt");

            Uri.Builder uri = new Uri.Builder();
            uri.appendEncodedPath(getFilesDir() "/text.txt");
            Uri u = uri.build();

            Log.d("keysss byte transf", u.toString());


            sr.getFile(u)
                    .addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {

                        }
                    });
        } catch (Exception e) {
            e.printStackTrace();
        }

        openFile();
}