根据文件是否存在重命名文件

时间:2013-05-28 07:37:13

标签: c#

我目前正在处理iPad上的一个问题,当你通过我的网站上传图像时,图像被重命名为“image.jpg”,这是一个问题,好像它在同一个目录中会导致问题..所以我我试图阻止它重命名文件或在其末尾添加一个增量数字,但是我无法使其正常运行。

我已经使用这个小代码片段来尝试修复它,但它似乎无法正常工作。

if(File.Exists(filename))
{
    fileName = String.Format("{0}({1}", fileName, count++);
    inputFile.PostedFile.SaveAs( String.Format( "{0}\\{1}", directory, fileName ) );
}
else
{
    inputFile.PostedFile.SaveAs( String.Format( "{0}\\{1}", directory, fileName ) );
}
                    }

4 个答案:

答案 0 :(得分:1)

File.Exists(filename)需要完整的文件路径来查看文件是否存在。

但在行inputFile.PostedFile.SaveAs中,您将文件路径连接为

directory + "//" + fileName

你的fileName实际上是由完整路径组成的,还是仅包含扩展名的实际文件名?

如果fileName由fullPath组成,则inputFile.PostedFile.SaveAs不起作用,因为它会指向无效的位置,如果fileName只包含文件名而不是完整路径,那么, File.Exists不应该有用。无论哪种方式,你的逻辑都有缺陷。

我想,现在你知道了,要改变什么。

另外,不是使用计数器,只需将DateTime.Now.ToString("hhmmddttmmss")附加到fileName即可使其唯一。

答案 1 :(得分:1)

致电时:

if(File.Exists(filename))

确保文件名包含磁盘上保存文件的完整路径。

从它的外观来看,你可能想要使用Path.Combine(目录,fileName),而不仅仅是文件名。

答案 2 :(得分:1)

您可以将文件名生成为

filename = filename + DateTime.Now.Ticks.ToString();

以便它始终是新文件。我的意思是它将保留旧文件和新文件。

我希望它会对你有所帮助.. :)

答案 3 :(得分:0)

试试这个

    fileName= Path.Combine(directory,fileName );
    if(File.Exists(filename))
    {
        fileName = fileName + DateTime.Now.Ticks;         
    }
    inputFile.PostedFile.SaveAs( fileName );