Android RenameTo留下空文件

时间:2015-02-13 20:40:46

标签: android android-file

你能帮我吗? 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);

3 个答案:

答案 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