2016-03-31 14 views
-2

kodum varlıkları klasöründen sd kartına bir dosya kopyalama için çalışıyor. ancak yeniden kopyalamaya çalıştığımda, eski dosyayı, yerine yeniden adlandırmak yerine yenisiyle değiştirir. Bunu nasıl düzeltirim? onların var teşekkürler durumda dosya üzerine yazmavarlık dosyaları klasöründen sd kartına dosyaları kopyala android

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

evet, ayrıca bu soruyu da yanıtlayabilirim ... Ama ** neden bu şeyi yapmak istiyorsun? ** Yinelemeli olarak silmek veya sonsuzca yazmak bir uygulamada * güzel * veya * olağan * davranışı görünmüyor ... ** Cihazlara neden zarar vermeniz gerekiyor? ** –

+0

Daha iyi bir cihaz yöneticisi uygulaması ve güvenlik uygulaması üzerinde çalışıyorum. Bu sms üzerinde çalışır ve şifrenizin çalışması için gerekecektir :). yazım sonsuza dek başka bir proje için btw – abbie

+0

benim projenin davranışını test etmek için belleğimi doldurmaya çalışıyorum, bu benim geliştirici araçları uygulamasına dahil edilecek – abbie

cevap

0

NaN cevabı hedefe ulaşmak için yollar, sadece iş yapacak bir satır değişen biridir:

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

başka yolu da dosya boyutunu reklam ETERNUM artırmak, ancak bir yapıyoruz araçlar buna uygun değildir.

+1

2147483647 ('Integer.MAX_VALUE') dosyalarından daha fazlasına ihtiyacınız yoksa, evet ... –

+0

iyi ...' ++ 1' çalışmaz ... bir değişkene ihtiyacınız var .... ayrıca ... bize hata veya istisna söyle ... * kopyalama değil * harika bir bilgi değil ... –

+0

bu bir hata veya istisna değil ... stacktrace veya günlük herhangi bir mesaj? –

1

, dosya başka bir dosya adı almak varsa kullanın fileObject.exists() yöntem, kontrol etmek için benzersiz bir sonek kazanmak için System.currentTimeMillis() yöntemi kullanmak ve dosya adına ekleyebilirsiniz normal bir davranıştır .

+0

@abbie "Depolama alanıma kadar" ile ne demek istiyorsun? –

+0

, dosyaları, bellek kartı/dahili SD kartına (birincil/ikincil bellek/bellek) dolu olana kadar kopyalamaya devam etmektir. – abbie

+1

Bunun bir konu dışı olduğunu düşünüyorum, lütfen başka bir soru sorun. –

İlgili konular