首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android File.renameTo总是在我的测试索尼设备中返回false

Android File.renameTo总是在我的测试索尼设备中返回false
EN

Stack Overflow用户
提问于 2016-04-08 08:08:38
回答 1查看 1.8K关注 0票数 3

我试图重命名一个文件以添加它的扩展名。我正在检测文件的类型,并希望将扩展名附加到文件中。这一切都很好,但我有一个索尼Xperia Z2进行测试,一些奇怪的事情发生。在其他设备和仿真器中,工作起来就像一种魅力,但在这一种.不可能的。

它总是返回false,尽管它在父文件夹中有写权限,但它是同一个文件夹,它只附加一个".jpg“或".png”或类似的东西。由于File.renameTo函数没有给出任何错误,只是抛出错误,我无法确定是否只有我.但我开始相信,这与它如何管理内部/外部存储有关。内部存储实际上是sdcard0,外部存储是sdcard1。有些应用程序,如ES文件管理器,询问我的sdcard的根目录在哪里,这样它就可以重命名、移动或复制我的sdcard中的文件。Airdroid让我做同样的事。为什么会发生这种事?我怎么才能解决这个问题?

哦,而且我在舱单上有相关的权限,我一直在寻找这个东西的修复方法.在内部存储中也不起作用。我完全迷路了。这是我用来重命名文件的函数,如果它对某人有帮助.但我认为这是“内部sdcard”设备的问题,或者什么的。

代码语言:javascript
运行
复制
private void setFixed(File f, String ext){
    File parent = f.getParentFile();
    try {
        String name = f.getName();
        String toName = (name+"."+ext).replace(" ", "");
        //Lines that I added just to test. I saw before I call this function that the parent has write permission.
        //Log.i("Pre", parent.getCanonicalPath()+name);
        //Log.i("Post", parent.getCanonicalPath()+toName);
        //File of = new File(parent.getCanonicalPath()+name);
        //File nf = new File(parent.getCanonicalPath()+toName);
        //Log.i("Converted", String.valueOf(of.renameTo(nf)));
        File f1 = new File(parent.getAbsolutePath()+toName);
        boolean success = f.renameTo(f1);
        Log.i("File renamed?", String.valueOf(success));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2016-04-11 08:15:56

请阅读renameTo(File)文档(单击该方法并按ctrl + Q)。

将此文件重命名为newPath。文件和目录都支持此操作。许多失败是可能的。一些更可能的失败包括:需要对包含源路径和目标路径的目录使用写权限。两个路径的所有父级都需要搜索权限。两条路径都位于相同的挂载点上。在Android上,当尝试在内部存储和SD卡之间进行复制时,应用程序最有可能遇到这个限制。注意,此方法不会在失败时抛出IOException。调用者必须检查返回值。

如您所见,搜索权限是必需的。确保将此添加到清单中。

你也需要改变

File f1 = new File(parent.getAbsolutePath()+toName);

代码语言:javascript
运行
复制
File f1 = new File(parent.getAbsolutePath().toString()+ "/" +toName);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36494605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档