1

我正在开发一个 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();
 }

解决方案非常感谢@SD(见评论)

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

3 回答 3

1

我认为问题在于:

File f = adapter.getItem(i);

给用 some File f, say where fcooresponds to say: user2351234/Desktop. 然后,你这样做:

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

其中说要制作一个File file,其中filecooresponds to: user2351234/Desktop/helloworld. 接下来,您调用:

f.renameTo(file)

它试图将 , 重命名fuser2351234/Desktopuser2351234/Desktop/helloworld这没有意义,因为为了user2351234/Desktop/helloworld存在,user2351234/Desktop它必须存在,但由于操作它将不再存在。

我的假设可能不是原因,但从为什么 File.renameTo(...) 不创建目标的子目录?,如果子目录不存在,显然renameTo 返回。false

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

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

编辑:
我提出的解决方案应该有效,但是如果我关于为什么您的方式不起作用的假设不正确,您可能希望从Windows 上的 Reliable File.renameTo() 替代方案中看到这个答案?

于 2013-08-04T03:32:35.953 回答
0

使用此代码。

File sdcard = Environment.getExternalStorageDirectory()+ "/nameoffile.ext" ;
File from = new File(sdcard,"originalname.ext");
File to = new File(sdcard,"newname.ext");
from.renameTo(to);
于 2013-08-04T04:39:01.170 回答
0

问题 1:您看到异常还是返回 false?

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

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

这篇文章:如何使用 Android 应用程序重命名 sdcard 上的文件?似乎回答了类似的问题。

于 2013-08-04T03:41:37.220 回答