#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();
}