Файловые операции

Я хотел переместить файл из одной папки в другую (целевую) папку. Если этот же файл уже существует в целевой папке, я хочу переименовать его. Как реализовать в C #.

Заранее спасибо Sekar

13.10.2009 03:56:18
А во что вы хотите переименовать файл? А если это имя взято? И этот?
Joel Coehoorn 13.10.2009 04:00:02
4 ОТВЕТА

По сути, это:

string source = ..., dest = ...; // the full paths
if(File.Exists(dest)) 
{
   File.Move(dest, Path.GetTempFileName());
}
File.Move(source, dest);
1
13.10.2009 04:03:56

Вы захотите использовать класс System.IO.Fil e и заранее проверить существование файла.

if(File.Exists("myfile.txt"))
  File.Move("myfile.txt", "myfile.bak");

File.Move("myotherfile.txt","myfile.txt");
0
13.10.2009 04:01:51

System.IO.File. * Имеет все необходимое.

System.IO.File.Exists = Чтобы проверить, существует ли файл. System.IO.File.Move = Переместить (или переименовать файл).

2
13.10.2009 04:02:25

Если вы предпочитаете поведение в стиле Windows, значит, есть код, который я использую для такой операции

public static void FileMove(string src,ref string dest,bool overwrite)
{
    if (!File.Exists(src))
        throw new ArgumentException("src");
    File.SetAttributes(src,FileAttributes.Normal);
    string destinationDir = Path.GetDirectoryName(dest);
    if (!Directory.Exists(destinationDir))
    {
        Directory.CreateDirectory(destinationDir);
    }
    try
    {
        File.Move(src,dest);
    }
    catch (IOException)
    {
        //error # 183 - file already exists
        if (Marshal.GetLastWin32Error() != 183)
            throw;
        if (overwrite)
        {
            File.SetAttributes(dest,FileAttributes.Normal);
            File.Delete(dest);
            File.Move(src,dest);
        }
        else
        {
            string name = Path.GetFileNameWithoutExtension(dest);
            string ext = Path.GetExtension(dest);
            int i = 0;
            do
            {
                dest = Path.Combine(destinationDir,name
                    + ((int)i++).ToString("_Copy(#);_Copy(#);_Copy")
                    + ext);
            }
            while (File.Exists(dest));
            File.Move(src,dest);
        }
    }
}
0
13.10.2009 07:25:07