Android:FireBase存储:将json文件下载为临时文件

时间:2017-09-13 08:51:25

标签: java android firebase firebase-storage

我不仅仅是困惑而且还尝试了几件事:我想将FireBase中的纯文本文件下载到我的本地临时文件空间。这非常有效。现在我想在我的外部类中使用此文件的全文。 我怎么能这样做?

这是我的代码段:

private void getFireBaseStorage() {
    FirebaseStorage storage =
            FirebaseStorage.getInstance();
    StorageReference storageRef =
            storage.getReferenceFromUrl("gs://URL")
                    .child("filename.json");
    try {
        final File localFile = File.createTempFile("file", "json");
        storageRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
                Log.i("FireBase", "File is present " + Long.toString(localFile.length()));
                try {
                    FileReader fr = new FileReader(localFile);
                    BufferedReader br = new BufferedReader(fr);
                    String sCurrentLine;
                    while ((sCurrentLine = br.readLine()) != null) {
                        mJSONReturnValue += sCurrentLine;
                    }
                    System.out.println(mJSONReturnValue);
                } catch (IOException exception) {
                    exception.printStackTrace();
                }    
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {
                Log.i("FireBase", "File is not there");
            }
        });
        // Log.i("FireBase", result.());

    } catch (IOException ioexception) {
        ioexception.printStackTrace();
    }

1 个答案:

答案 0 :(得分:0)

问题是:我试图从FireBase存储中下载更大的文件。该文件约有。 1.3 MB,需要将近3分钟。随着

  

.addOnCompleteListener(新   OnCompleteListener(){            @覆盖            public void onComplete(@NonNull Task task){                Log.i(标签,“完成”);                FireBaseStorage.this.returnValue = returnValue;                showValue();            }

可以返回一个合适的值,但效率不高。也许这不是FireBase存储的主要建议。

干杯, 比约恩