renameTo()
留下空旧文件。所以我在文件系统中看到了2个带有新名称和旧名称的文件。旧文件的大小为0
。如果我在重命名后删除旧文件,则表示该文件在保留在文件系统中时不存在。
目录的绝对路径是:
/storage/sdcard0/DCIM/Camera
我的代码:
String dir = oldpath.substring(0, oldpath.lastIndexOf("/"));
File directory = new File(dir);
File from = new File(directory, oldfilename);
File to = new File(directory, newname);
renamed = from.renameTo(to);
答案 0 :(得分:1)
如果文件被另一个进程打开,则RenameTo保留原始文件的空副本。
例如,我想在DownloadManager完成下载后重命名文件。下载后,DownloadManager显然会通知BroadcastReceivers,但在关闭文件之前。这导致onReceive中的renameTo留下空副本。为了解决这个问题,我必须让BroadcastReceiver在重命名文件之前等待半秒钟。
答案 1 :(得分:0)
试试这段代码:
File sdcard = new File("/storage/sdcard0/DCIM/Camera");
File from = new File(sdcard, "from.txt"); // Don't forget to set the file extension.
File to = new File(sdcard, "to.txt"); // In this case, we have a '.txt' file extension.
from.renameTo(to);
您可以使用以下代码以编程方式获取String
类型的sdcard目录:
String sdcard = Environment.getExternalStorageDirectory().getPath();
不要忘记在清单中添加此权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 2 :(得分:0)
您必须记住两件事:文件和文件扩展名(文件类型)。以下有时是错误的方式,在删除和重命名文件的情况下:
File file = new File (dir+"/"+myfile)
正确的做法是:
File file = new File (dir, myfile+".db");
对于 Full Aprroach,您可以查看 Answer Here。