2012-02-03 2 views
3

мне нужно перемещать файлы из одного места на пользователей SDCard в другое место на SDCardПеремещение файла на андроид

В настоящее время я делаю это с File.renameTo

например from sdcard/test/one.txt to sdcard/test2/two.txt

Некоторые пользователи сообщили, что функция перемещения файла не работает.

я наткнулся на ссылку ниже:

How to copy files from 'assets' folder to sdcard?

Так что это лучший способ, чтобы переместить файл из одного каталога в другой на SDCard?

ответ

3

попробуйте скопировать эти коды и проверить файлы и удалить оригинал.

private void backup(File sourceFile) 
{ 
    FileInputStream fis = null; 
    FileOutputStream fos = null; 
    FileChannel in = null; 
    FileChannel out = null; 

    try 
    { 
     File backupFile = new File(backupDirectory.getAbsolutePath() + seprator + sourceFile.getName()); 
     backupFile.createNewFile(); 

     fis = new FileInputStream(sourceFile); 
     fos = new FileOutputStream(backupFile); 
     in = fis.getChannel(); 
     out = fos.getChannel(); 

     long size = in.size(); 
     in.transferTo(0, size, out); 
    } 
    catch (Throwable e) 
    { 
     e.printStackTrace(); 
    } 
    finally 
    { 
     try 
     { 
      if (fis != null) 
       fis.close(); 
     } 
     catch (Throwable ignore) 
     {} 

     try 
     { 
      if (fos != null) 
       fos.close(); 
     } 
     catch (Throwable ignore) 
     {} 

     try 
     { 
      if (in != null && in.isOpen()) 
       in.close(); 
     } 
     catch (Throwable ignore) 
     {} 

     try 
     { 
      if (out != null && out.isOpen()) 
       out.close(); 
     } 
     catch (Throwable ignore) 
     {} 
    } 
} 
+0

спасибо, что отлично работает – user1177292

0

Почему вы не можете использовать rename?

File sd=Environment.getExternalStorageDirectory(); 
// File (or directory) to be moved 
String sourcePath="/.Images/"+imageTitle; 
File file = new File(sd,sourcePath); 
// Destination directory 
boolean success = file.renameTo(new File(sd, imageTitle)); 
0

Я знаю, что этот вопрос был дан ответ давным-давно, но я обнаружил, скопировав весь файл суровая метод ... Вот что мне делать, если кто-то нуждается в нем:

static public boolean moveFile(String oldfilename, String newFolderPath, String newFilename) { 
    File folder = new File(newFolderPath); 
    if (!folder.exists()) 
     folder.mkdirs(); 

    File oldfile = new File(oldfilename); 
    File newFile = new File(newFolderPath, newFilename); 

    if (!newFile.exists()) 
     try { 
      newFile.createNewFile(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    return oldfile.renameTo(newFile); 
} 
+0

Это работает, если старые и новые файлы находятся на одной точке монтирования. Из [docs] (http://developer.android.com/reference/java/io/File.html#renameTo%28java.io.File%29) «Оба пути находятся в одной точке монтирования». – Diederik

+0

@Diederik Да, конечно, вы не можете переместить файл из одного раздела в другой ... – TheSquad

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