为什么我的文件不会重命名?

时间:2013-08-04 03:18:02

标签: java android file

我正在开发一个Android应用程序,我想重命名一个文件。问题是它没有重命名:

 File f = adapter.getItem(i);
 File file = new File(f.getAbsolutePath(), "helloworld");
 if (f.renameTo(file)) {
 Toast.makeText(getActivity(), "done", Toast.LENGTH_LONG).show();
 }

解决方案BIg感谢@ S.D。(见评论)

File f = adapter.getItem(i);
     File file = new File(f.getParent(), "helloworld");
     if (f.renameTo(file)) {
     Toast.makeText(getActivity(), "done", Toast.LENGTH_LONG).show();
     }

3 个答案:

答案 0 :(得分:1)

我认为问题在于:

File f = adapter.getItem(i);

使用一些File f,比如说f cooresponds说:user2351234/Desktop。然后,你做:

 File file = new File(f.getAbsolutePath(), "helloworld");

其中有一个File file,其中file来自:user2351234/Desktop/helloworld。接下来,您致电:

f.renameTo(file)

尝试将fuser2351234/Desktop重命名为user2351234/Desktop/helloworld,这是没有意义的,因为为了user2351234/Desktop/helloworld存在,user2351234/Desktop会有存在,但由于操作它将不复存在。

我的假设可能不是的原因,但是来自Why doesn't File.renameTo(…) create sub-directories of destination?,显然renameTo 返回false -directory不存在。

如果您只想更改文件名,请执行以下操作:

File f = adapter.getItem(i);
String file = f.getAbsolutePath() + "helloworld";
f = new File(file);

修改
我提出的解决方案应该有效,但如果我的假设无法解决您的方式不正常,您可能希望从answer

看到这个Reliable File.renameTo() alternative on Windows?

答案 1 :(得分:0)

问题1:您是否看到异常或是否返回错误?

问题2:您是否允许该应用程序写入SD卡? (我假设这个文件所在的位置)。 添加权限为“

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

这篇帖子:How to rename a file on sdcard with Android application?似乎回答了类似的问题。

答案 2 :(得分:0)

使用此代码。

File sdcard = Environment.getExternalStorageDirectory()+ "/nameoffile.ext" ;
File from = new File(sdcard,"originalname.ext");
File to = new File(sdcard,"newname.ext");
from.renameTo(to);