C# 如果目录(ASP.net)中已存在文件,如何重命名该文件

C# 如果目录(ASP.net)中已存在文件,如何重命名该文件,c#,asp.net,C#,Asp.net,我在网上看到了不少上传文件的问题,但这似乎对我不起作用。 我需要重命名我的文件,如果它已经存在于目录中 我甚至尝试过MSDN另存为/重命名方法,但它似乎不起作用,也许我遗漏了什么。我不想删除或覆盖任何东西 这是我目前正在使用的,但它只是覆盖了文件 string folderName = Server.MapPath("\\Track\\Upload"); string pathString = System.IO.Path.Combine(folderName, SupDDL.Selec

我在网上看到了不少上传文件的问题,但这似乎对我不起作用。 我需要重命名我的文件,如果它已经存在于目录中

我甚至尝试过MSDN另存为/重命名方法,但它似乎不起作用,也许我遗漏了什么。我不想删除或覆盖任何东西

这是我目前正在使用的,但它只是覆盖了文件

string folderName = Server.MapPath("\\Track\\Upload");    
string pathString = System.IO.Path.Combine(folderName, SupDDL.SelectedItem.Text.Trim());
System.IO.Directory.CreateDirectory(pathString);
string fileName = QuoteUpload.FileName;
if (!System.IO.File.Exists(pathString))
{
using (System.IO.FileStream fs = System.IO.File.Create(pathString))
 {
   for (byte i = 0; i < 100; i++)
  {
   fs.WriteByte(i);
   }
QuoteUpload.SaveAs(pathString)}
}

尝试只调用另存为

if (!System.IO.File.Exists(pathString))
{
   QuoteUpload.SaveAs(pathString);
}

据我所知,c#中现在有了“Rename()”方法

运行超过100字节是不明智的,因为你永远不知道上传文件有多大

您可以做的是创建帮助功能:

第一个-将检查文件是否存在

第二个-将删除/覆盖现有文件

第三个-将上载新文件

详情如下: 1 + 2.

三,

以下函数适用于任何类型的文件

如果你有任何进一步的问题,请提问


祝你好运

没有重命名功能,您可以通过使用新名称复制文件并删除旧名称来完成此操作

C#样本

string strFilePath = Server.MapPath("~/FilesFolder/");
string strOldFileName = "OldFileName.rar";
string strNewFileName = "NewFilName.rar";

if (System.IO.File.Exists(strFilePath + strOldFileName)) {
    System.IO.FileInfo FileInfo = new System.IO.FileInfo(strFilePath + strOldFileName);
    FileInfo.CopyTo(strFilePath + strNewFileName, true);
    FileInfo.Delete();
}
Dim strFilePath As String = Server.MapPath("~/FilesFolder/")
Dim strOldFileName As String = "OldFileName.rar"
Dim strNewFileName As String = "NewFilName.rar"

If IO.File.Exists(strFilePath & strOldFileName) Then
    Dim FileInfo As IO.FileInfo = New IO.FileInfo(strFilePath & strOldFileName)
    FileInfo.CopyTo(strFilePath & strNewFileName, True)
    FileInfo.Delete()
End If


VB样本

string strFilePath = Server.MapPath("~/FilesFolder/");
string strOldFileName = "OldFileName.rar";
string strNewFileName = "NewFilName.rar";

if (System.IO.File.Exists(strFilePath + strOldFileName)) {
    System.IO.FileInfo FileInfo = new System.IO.FileInfo(strFilePath + strOldFileName);
    FileInfo.CopyTo(strFilePath + strNewFileName, true);
    FileInfo.Delete();
}
Dim strFilePath As String = Server.MapPath("~/FilesFolder/")
Dim strOldFileName As String = "OldFileName.rar"
Dim strNewFileName As String = "NewFilName.rar"

If IO.File.Exists(strFilePath & strOldFileName) Then
    Dim FileInfo As IO.FileInfo = New IO.FileInfo(strFilePath & strOldFileName)
    FileInfo.CopyTo(strFilePath & strNewFileName, True)
    FileInfo.Delete()
End If

在使用之前,如果文件存在,则应选中以重命名该文件:

            if (File.Exists(pathString))
                File.Move(pathString, newFilePath);

您有任何错误消息吗?为什么它不工作?没有错误消息,它只是用相同的名称替换目录中已经存在的文件,覆盖它。您是否在某处吞咽异常?为什么您的代码没有崩溃,因为您在调用
.SaveAs(…)
时将文件保持在
fs
变量中打开?谢谢您的回复,但我不想删除或覆盖文件谢谢您的回复,我尝试了此方法,这可能是最简单的方法。谢谢您的回复,但我不想删除任何文件。问题或标题似乎已经更改,在您的情况下,您只需要使用“If IO.File.Exists(strFilePath&strFileName)Then”,如果文件存在,则以任何方式更改名称。
            if (File.Exists(pathString))
                File.Move(pathString, newFilePath);