Переименование файла портится с файлом - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь переименовать файл и Android Studio. Но когда я пытаюсь переименовать файл, тогда для свойства чтения, записи и скрытия файла устанавливается значение false. Дата последнего изменения файла изменяется на "01.01.1970 05:30 AM".

//minSdkVersion 19

private ArrayList<FileData> getMusic(Context context) {
    ArrayList<FileData> fileData = new ArrayList<>();

    ContentResolver contentResolver = context.getContentResolver();
    String[] projection = {MediaStore.Audio.Media.DATA};
    Cursor externalCursor = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, null, null, null);

    while (Objects.requireNonNull(externalCursor).moveToNext()) {
        System.out.println(externalCursor.getString(0));
        fileData.add(getFileData(context, new File(externalCursor.getString(0))));
    }

    sortByDate(fileData);

    return groupDateWise(fileData);
}

Переименование файла

File renameFile = new File(file.getParent(), editText.getText().toString().trim());
boolean success = file.renameTo(renameFile);

Перед переименованием

(https://i.stack.imgur.com/nmhUI.png)

После переименования

(https://i.stack.imgur.com/CtUCi.png)

Спасибо за помощь.

1 Ответ

0 голосов
/ 08 марта 2019

Если вы не можете получить доступ к пакетам java.nio, вы можете установить эти флаги явно

boolean success = file.renameTo(renameFile);

if (success) {
   renameFile.setReadable(true);
   renameFile.setWritable(true);
}

JavaDoc на помощь!

Многие аспекты поведения этого метода по своей природе зависят от платформы.

Я бы посоветовал вам , а не использовать renameTo.
Вместо этого ищите Files#move ( документы )

move(Path source, Path target, CopyOption... options)

Пример:

Files.move(file.getParent().toPath(), renameFile.toPath() /* Or simply Paths.get("your-path") */);
...