Спросить пользователя о перезаписи файла при перемещении файла на Android

Я перемещаю файлы 1) Копирование исходного файла в папку 2) Удаление исходного файла в конце. Если файл с таким именем уже существует в папке назначения, я создаю диалоговое окно с предупреждением «Переписать этот файл?». Но когда появляется сообщение, исходный файл удаляется.

Я начинаю копировать и удалять методы в одном и том же новом Thread(...) и показываю диалог предупреждений в UIthread.

//First class:
final File file = new File(initFilePath);
new Thread(new Runnable() {
@Override
public void run() {
    FileFoldersLab.get(getContext()).copyFile(file,FileFoldersLab.get(getContext()).getCurPath());
    FileFoldersLab.get(getContext()).removeFile(file);
    updateUI();
}
}).start();

//FileFoldersLab:
public void copyFile(final File src, final String destPath){
final File f = new File(destPath+File.separator+src.getName());
if (f.exists()){
        final AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
        builder.setTitle("The file already exists");
        builder.setMessage("Would you like to rewrite " + f.getPath()+ " ?");
        builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //Copying file
            }
        });
        builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });
    //Showing the alert dialog
        mActivity.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                AlertDialog dialog = builder.create();
                dialog.show();
            }
        });
    }else{
        //Copying file
    }
} 

Если вы найдете мой ответ полезным, пожалуйста, проголосуйте за него.

Jasurbek 01.07.2020 19:15
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Изменить это

   //First class:
final File file = new File(initFilePath);
new Thread(new Runnable() {
@Override
public void run() {
    FileFoldersLab.get(getContext()).copyFile(file,FileFoldersLab.get(getContext()).getCurPath());
    FileFoldersLab.get(getContext()).removeFile(file);
    updateUI();
}
}).start();

//FileFoldersLab:
public void copyFile(final File src, final String destPath){
final File f = new File(destPath+File.separator+src.getName());
if (f.exists()){
        final AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
        builder.setTitle("The file already exists");
        builder.setMessage("Would you like to rewrite " + f.getPath()+ " ?");
        builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //Copying file
            }
        });
        builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });
    //Showing the alert dialog
        mActivity.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                AlertDialog dialog = builder.create();
                dialog.show();
            }
        });
    }else{
        //Copying file
    }
} 

В это

        //First class:
        final File file = new File(initFilePath);
        new Thread(new Runnable() {
        @Override
        public void run() {
            FileFoldersLab.get(getContext()).copyFile(file,FileFoldersLab.get(getContext()).getCurPath());

            updateUI();
        }
        }).start();

        //FileFoldersLab:
        public void copyFile(final File src, final String destPath){
        final File f = new File(destPath+File.separator+src.getName());
        if (f.exists()){
                final AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
                builder.setTitle("The file already exists");
                builder.setMessage("Would you like to rewrite " + f.getPath()+ " ?");
                builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        //Copying file

     //After copying 
FileFoldersLab.get(getContext()).removeFile(file);
                    }
                });
                builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
            //Showing the alert dialog
                mActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        AlertDialog dialog = builder.create();
                        dialog.show();
                    }
                });
            }else{
                //Copying file
    //After copying
    FileFoldersLab.get(getContext()).removeFile(file);
            }
        } 

Другие вопросы по теме