2016-03-19 2 views
0

У меня есть .zip-файл в папке моих ресурсов, который я хочу скопировать 1-1 в .zip в папку на моем устройстве.Копирование zip из/активов в SDCard

Это вид работ, но выход zip содержит также материал, который я не понимаю.

Что у меня есть:

ввода:

активы: Map.mp3

Выход:

Map.zip

активы + META-INF + орг + Рез + AndroidManifest.xml + classes.dex + resources.arsc (все APK файл)

Если в Map.zip/assets есть Map.mp3 с начальное содержание. Но мне просто нужно иметь копию 1-1 с просто расширением файла.

Мой код:.

//taken from: http://stackoverflow.com/questions/4447477/android-how-to-copy-files-from-assets-folder-to-sdcard 
     AssetManager assetManager = getAssets(); 
     AssetFileDescriptor assetFileDescriptor = null; 

     try 
     { 
      assetFileDescriptor = assetManager.openFd("Map.mp3"); 
      // Create new file to copy into. 
      File output= new File(_FILEPATH_ + java.io.File.separator + "Map.zip"); 
      output.createNewFile(); 
      copyFdToFile(assetFileDescriptor.getFileDescriptor(), output); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 


public static void copyFdToFile(FileDescriptor src, File dst) throws IOException { 
    FileChannel inChannel = new FileInputStream(src).getChannel(); 
    FileChannel outChannel = new FileOutputStream(dst).getChannel(); 
    try { 
     inChannel.transferTo(0, inChannel.size(), outChannel); 
    } finally { 
     if (inChannel != null) 
      inChannel.close(); 
     if (outChannel != null) 
      outChannel.close(); 
    } 
} 

_FILEPATH_ = Environment.getExternalStorageDirectory() getAbsolutePath() + "/ osmdroid"

ответ

0

Вы всегда можете использовать простую процедуру копирования файлов:

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

Метод с использованием FileDescriptor не работает со сжатыми файлами. Как я понимаю, вы получаете такое решение от that answer. Ниже комментарий,

Мое решение было изменить расширение на .mp3, а затем удалить его сразу скопирована

что предлагают переименовать расширение на .mp3 датирована 19 '12 декабря в 2:07. Google может изменить использование FileDescriptor и закрыть этот улов с переименованием.

Я использую простую процедуру в своем Android-проекте, и все работает нормально, проблем с производительностью нет.

Смежные вопросы