如何从Firebase存储下载txt文件并操作其中的数据?

问题描述 投票:0回答:1

我正在尝试从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();
    }

}
android firebase firebase-storage filenotfoundexception
1个回答
0
投票

我没有找到我希望的解决方案,但我稍微更改了代码。这里是:

我也很感激,如果有人告诉我为什么上面的“文件”不起作用。

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();
} 
© www.soinside.com 2019 - 2024. All rights reserved.