我正在开发一个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();
}
答案 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)
尝试将f
,user2351234/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
答案 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);