Я перемещаю файлы 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
}
}




Вы должны поместить удаление файлов, внутри подтверждения перезаписи и внутри того же файла, не найденного условия
Изменить это
//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);
}
}
Если вы найдете мой ответ полезным, пожалуйста, проголосуйте за него.