重命名文件使文件混乱

时间:2019-03-08 11:29:15

标签: java android file android-contentresolver

我正在尝试重命名文件和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 :(得分:0)

如果您无法访问java.nio软件包,则可以显式设置这些标志

boolean success = file.renameTo(renameFile);

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

JavaDoc 进行救援!

  

此方法行为的许多方面是固有的   平台相关。

我建议您使用renameTo
而是寻找Files#movedocs

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

示例:

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