2016-06-29 10 views
-1

以下のコードはファイルを一時的に(キャッシュメモリに保存していますが)推測しますが、ファイルを永続的に保存する必要があります。ファイルを永続的に保存する

public void downloadFile(){ 
      StorageReference islandRef = storageRef.child("cliff.jpg"); 
      File localFile = null; 
      try { 
       File cacheDir = getApplicationContext().getCacheDir(); 
       localFile = File.createTempFile("images", ".jpg", cacheDir); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      islandRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() { 
       @Override 
       public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) { 


       } 
     }).addOnFailureListener(new OnFailureListener() { 
      @Override 
      public void onFailure(@NonNull Exception exception) { 
       // Handle any errors 
       Log.i("msg", exception.toString()); 
       Toast.makeText(getApplicationContext(), "Failed", Toast.LENGTH_SHORT).show(); 

      } 
     }); 
+0

* *永久に* – Selvin

答えて

0

どのくらい永久に話していますか?アプリがアンインストールされてもデータは保持されますか?あなたは簡単だファイルをしたい場合は

File cacheDir = getApplicationContext().getCacheDir(); 

File cacheDir = getApplicationContext().getFilesDir(); 
+0

を定義します。アプリケーションをアンインストールしてもファイルを永続的に保存する必要があります。私は同じ目的のためにDownloadManagerを使用する前に。 –

0

に:一つの解決策は、変更することで、(唯一のアプリケーションへのアクセスやアプリをアンインストールすると削除されます)内部ストレージにデータを格納することです自分自身や他のアプリからアクセス

File externalRoot = Environment.getExternalStorageDirectory(); 
File dir = new File (externalRoot .getAbsolutePath() + "/parentFolder/childFolder"); 
dir.mkdirs(); 
File file = new File(dir, "filename"); 
... 
FileOutputStream f = new FileOutputStream(file); 
... 

は、あなたが、STOかどうかを確認する必要があり覚えている...、あなたはあなたの外部ストレージのルートを取得する必要がありますし、このようなもので...そこにフォルダを作成します怒りは書き込み可能かどうか。これは、他のアプリに表示されます、あなたは画像を保存するために/data/data/com.package/files

0

ようなパスを提供します。この

使用getApplicationContext().getFilesDir();をしたくない場合は、あなたがして、内部または外部記憶装置にそれを記述する必要がありますそうすること:

の代わりに:

File cacheDir = getApplicationContext().getCacheDir(); 
localFile = File.createTempFile("images", ".jpg", cacheDir); 

使用:

File cacheDir = getApplicationContext().getFilesDir(); 
localFile = new File("images.jpg", cacheDir); 

firebaseからのStorageReferenceの仕組みはわかりませんが、.getFileが内容をファイルにストリームすることは差し引かれます。その場合、このコードは動作するはずです

関連する問題