Я пытался переименовать фотографии, чтобы переместить их в другую папку.Что не так с моим кодом, который заставляет File.renameTo (File) возвращать false? - PullRequest
0 голосов
/ 24 октября 2018

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

imagesEncodedList - ArrayList строк пути к файлу.

boolean bool=false;
for(int i=0; i<imagesEncodedList.size();i++){
   File from;
   File to=null;

   try{
       from=new File(imagesEncodedList.get(i));
       String dateString=new SimpleDateFormat("MM_dd_yyyy_HH:mm:ss").format(Calendar.getInstance().getTime());
       to=new File(getPublicDir(),"SideBySide4_ImportedPhoto"+i+"_"+dateString+".jpg");
       bool=from.renameTo(to);
   }catch(Exception e){
      e.printStackTrace();
   }
    MediaScannerConnection.scanFile(this,
            new String[]{to.getPath()},
            null,
            null);
}
Toast.makeText(this, "Success?: "+bool, Toast.LENGTH_LONG)
        .show();

Вот моя getPublicDir () реализация функции:

public File getPublicDir() {
    // Get the directory for the user's public pictures directory.
    File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "raspberry");
    if (!file.mkdirs()) {
        Log.e("PUBLIC DIRECTORY", "Directory not created");
    }
    return file;
}

1 Ответ

0 голосов
/ 24 октября 2018

renameTo работает, только если источник и цель находятся на одном и том же разделе диска.Если это не так, вам придется скопировать исходный файл и впоследствии удалить его.

context.getFilesDir() находится в другом разделе (/data), чем Environment.getExternalStoragePublicDirectory (обычно доступен в /sdcard).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...