2017-09-13 3 views
0

私は混乱しています。いくつか試してみました.FireBaseからプレーンテキストファイルをローカルの一時ファイルスペースにダウンロードします。これは完全に機能します。今、私は外部クラスでこのファイルの全文を使いたいと思っています。 どうすればいいですか?Android:FireBase storage:jsonファイルを一時ファイルとしてダウンロード

ここに私のコードスニペット:

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

答えて

0

問題があった。私はFireBaseストレージから大きなファイルをダウンロードしようとしました。ファイルには約1.3 MBで、3分ほどかかります。

.addOnCompleteListenerと(新しい OnCompleteListener(){ @Override公共ボイドonCompleteの(@NonNullタスクのタスク){ Log.i(TAG) "終了"; FireBaseStorage.this.returnValue =のreturnValue ; showValue();}

は、それが適切な値を返すことが可能だが、それはそれほど効率的ではないかもしれない、これはFireBaseストレージの提案主ない

乾杯、 Bjoern

関連する問題