2016-03-31 16 views
-2

資産コードからsdカードにファイルをコピーする際に、自分のコードが正常に動作します。しかし、もう一度コピーしようとすると、名前を変更する代わりに古いファイルが新しいファイルに置き換えられます。どのように私はこれを修正するのですか?おかげで、彼らが存在する場合には、ファイルを上書きファイルをassetsフォルダからanddroidのsdカードにコピーする

private void copyAssets() { 
     AssetManager assetManager = getAssets(); 
     String[] files = null; 
     try { 
      files = assetManager.list(""); 
     } catch (IOException e) { 
      Log.e("tag", "Failed to get asset file list.", e); 
     } 
     if (files != null) for (String filename : files) { 
      InputStream in = null; 
      OutputStream out = null; 
      try { 
       in = assetManager.open(filename); 
       File outFile = new File(getExternalFilesDir(null), filename); 
       out = new FileOutputStream(outFile); 
       copyFile(in, out); 
      } catch(IOException e) { 
       Log.e("tag", "Failed to copy asset file: " + filename, e); 
      }  
      finally { 
       if (in != null) { 
        try { 
         in.close(); 
        } catch (IOException e) { 
         // NOOP 
        } 
       } 
       if (out != null) { 
        try { 
         out.close(); 
        } catch (IOException e) { 
         // NOOP 
        } 
       } 
      } 
     } 
    } 
    private void copyFile(InputStream in, OutputStream out) throws IOException { 
     byte[] buffer = new byte[1024]; 
     int read; 
     while((read = in.read(buffer)) != -1){ 
      out.write(buffer, 0, read); 
     } 
    } 
} 
+0

はい、私もこの質問に答えることができます...しかし、あなたはこのようなことをしたいのですか?**再帰的に削除するか、無限に書くことはアプリで素晴らしい* **なぜあなたはデバイスに害を及ぼす必要がありますか?** –

+0

私はより良いデバイスマネージャーアプリとセキュリティーアプリを開発しています。これはSMS上で動作し、作業するためにパスワードが必要になります:)。書き込みは無限に別のプロジェクト用ですbtw – abbie

+0

私のプロジェクトの動作をテストするために私の記憶を埋めることを試みています、これは私の開発者用ツールのアプリに含まれます – abbie

答えて

0

のNaN答えはただ1行を変更すると仕事をする、あなたの目標を達成するための方法の一つである:

File outFile = new File(getExternalFilesDir(null), filename + System.currentTimeMillis()); 

もう一つの方法は、ファイルサイズに広告eternumを増やすことですが、あなたが作っている場合これに合ったツールはあなたのニーズに合わないでしょう。

+1

2147483647( 'Integer.MAX_VALUE')以上のファイルを作成する必要がない場合は、yes ... –

+0

よく...' ++ 1'はうまく動作しません...また変数が必要です....また...エラーまたは例外を教えてください。*コピーしない*は素晴らしい情報ではありません。 –

+0

これはエラーまたは例外ではありません...スタックトレースまたはログのメッセージはありますか? –

1

は、ファイルが別のファイル名を選んで存在する場合、あなたはユニークなサフィックスを獲得し、ファイル名に追加しSystem.currentTimeMillis()メソッドを使用することができ、チェックするためにfileObject.exists()メソッドを使用して、正常な動作です。

+0

@abbie "私のストレージがいっぱいになるまで"はどういう意味ですか? –

+0

これは、メモリカード/内蔵SDカード(プライマリ/セカンダリストレージ/メモリ)にいっぱいになるまでファイルをコピーし続けることを意味します。 – abbie

+1

私はこれが話題から離れていると思います。それについて別の質問をしてください。 –

関連する問題