2014-09-07 2 views
0

Я использую эту функцию, что я получил от другого вопроса для копирования изображения:Как получить путь к файлу после копирования?

public static boolean copyFile(String from, String to) { 
    try { 
     File sd = Environment.getExternalStorageDirectory(); 
     if (sd.canWrite()) { 
      int end = from.toString().lastIndexOf("/"); 
      String str1 = from.toString().substring(0, end); 
      String str2 = from.toString().substring(end+1, from.length()); 
      File source = new File(str1, str2); 
      File destination= new File(to, str2); 
      if (source.exists()) { 
       FileChannel src = new FileInputStream(source).getChannel(); 
       FileChannel dst = new FileOutputStream(destination).getChannel(); 
       dst.transferFrom(src, 0, src.size()); 
       src.close(); 
       dst.close(); 
      } 
     } 
     return true; 
    } catch (Exception e) { 
     return false; 
    } 
} 

и я использую, что таким образом:

   String filePath = Helper.pathgal(act, data.getData()); 
       File mydir = new File(Environment.getExternalStorageDirectory() + "/Albummaker/Pics/"); 

       if (!mydir.exists()) { 
        mydir.mkdirs(); 
       } else { 
        Log.d("error", "dir. already exists"); 
       } 

       String dest = mydir.getAbsolutePath(); 
       copyFile(filePath, dest); 

       // now I want to use destination file path for using in a bitmap 
       bmp = Helper.decodeFile(dest, act); 

       // now I'm loading that bitmap in an imageview 
       Helper.showpic(act, id1, bmp); 

Но это не показывает в ImageView (Если я использую оригинальный путь к файлу, он работает, хотя). функция копирования работает, и файл изображения существует в окончательном пути к файлу, но я думаю, что я должен добавить имя файла как «путь к файлу mydir» для использования в растровом изображении.

+0

вы не указали имя файла в любом из приведенного выше кода. String dest = mydir.getAbsolutePath() + "myfile.png"; что-то вроде этого требуется –

+0

@IllegalArgument мой вопрос именно в этом. как получить это «имя файла»? (Это не тот же файл каждый раз, и он изменяется.) –

+0

Мой ответ в точности соответствует тому, что ваше имя файла в комментарии выше «myfile.png», чтобы вы знали, что это «myfile.png», прежде чем присоединять его –

ответ

0

Функция копирования работает, и файл изображения существует в окончательном пути к файлу, но я думаю, что я должен добавить имя файла как к пути к файлу «mydir» для использования в растровом изображении.

Да, ваша переменная dest не содержит ваш файл изображения. Это просто папка «../Albummaker/Pics/»

Вы показываете вернуть файл назначения в методе CopyFile:

public static File copyFile(String from, String to) { 
try { 
    File sd = Environment.getExternalStorageDirectory(); 
    if (sd.canWrite()) { 
     int end = from.toString().lastIndexOf("/"); 
     String str1 = from.toString().substring(0, end); 
     String str2 = from.toString().substring(end+1, from.length()); 
     File source = new File(str1, str2); 
     File destination= new File(to, str2); 
     if (source.exists()) { 
      FileChannel src = new FileInputStream(source).getChannel(); 
      FileChannel dst = new FileOutputStream(destination).getChannel(); 
      dst.transferFrom(src, 0, src.size()); 
      src.close(); 
      dst.close(); 
     } 
    } 
    return destination; 
} catch (Exception e) { 
    return null; 
} 
} 
+0

, а затем? как я могу получить имя файла из пункта назначения? (Ваше возвращение тоже не в правильном положении). –

+0

Я думаю, вы можете получить путь через File desFile = copyFile (filePath, dest); Helper.decodeFile (desFile.getAbsolutePath(), act); – thuongle

+0

Спасибо за простой ответ :) –

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