2016-06-01 3 views
0

ファイルを内部メモリに保存しようとしていますが、これも自分のアプリケーションでのみ読めるようにしてください。 今まで私はこれを試しました。アンドロイドのアプリケーションディレクトリのデータを保存、読み取り、保護しています

String filesave =  Environment.getExternalStorageDirectory()+""+getFilesDir()+"/.fkfk"; 
    File f = new File(filesave); 
    if (!f.exists()){ 
     f.mkdir(); 
    } 
File sd = Environment.getExternalStorageDirectory(); 
    Log.e("files", Environment.getExternalStorageDirectory()+f.getAbsolutePath()); 
String path = Environment.getExternalStorageDirectory()+"/.NEWFolders/hdfc0002.jpg"; 
    File toCopy = new File(path); 
    if (toCopy.exists()){ 
     Log.e("ok","got the path"); 
     try{ 
      if (sd.canWrite()) { 
       File source= toCopy; 
       File destination=f; 
       if (source.exists()) { 
        FileChannel src = new FileInputStream(source).getChannel(); 
        FileChannel dst = new FileOutputStream(destination).getChannel(); 
        if (dst != null && source != null) { 
         dst.transferFrom(src, 0, src.size()); 
        } 
        if (src != null) { 
         src.close(); 
        } 
        if (dst != null) { 
         dst.close(); 
        } 
       }else { 
        FileChannel src = new FileInputStream(source).getChannel(); 
        FileChannel dst = new FileOutputStream(destination).getChannel(); 
        if (dst != null && source != null) { 
         dst.transferFrom(src, 0, src.size()); 
        } 
        if (src != null) { 
         src.close(); 
        } 
        if (dst != null) { 
         dst.close(); 
        } 
       } 
      } 
     }catch (FileNotFoundException e){ 
      e.printStackTrace(); 
     }catch (IOException e){ 
      e.printStackTrace(); 
     } 

    } 

ただし、このコードスニペットはFileNotFound例外をスローしています。 同じことをお勧めします。これが混ざっている

答えて

2

事前に ありがとう:

Environment.getExternalStorageDirectory()+""+getFilesDir()+"/.fkfk"; 

Environment.getExternalStorageDirectoryとコンテキストのgetFiledDir()方法は、2つの完全に異なる場所を参照してください - 主要な「外部ストレージ」(上の最初のこれらの日は、典型的には、デバイスの永久的な部分)、2番目はアプリのプライベートストレージ領域にあります。

目的に最も適した場所を見つけるには、これらの方法のいずれか1つを使用する必要があります。あなたの決定を助けるために、AndroidドキュメントのStorage OptionsまたはSaving Filesに問い合わせることがあります。あなたのアプリケーションだけが使用されることを望むなら、通常は内部ストレージ、つまりgetFilesDir()が必要です。

ロケーションを選択したら、コードの残りの部分と一貫性を持たせる必要があります。

+0

私はアプリケーションのためのプライベートデータディレクトリを使用したい場合は、この詳細についてお教えください –

+0

提供されているアンドロイドのドキュメントへのリンクを参照してください。 –

関連する問題