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

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

0 голосов
/ 13 октября 2009

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

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

Ответы [ 4 ]

2 голосов
/ 13 октября 2009

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

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

1 голос
/ 13 октября 2009

По сути, это:

string source = ..., dest = ...; // the full paths
if(File.Exists(dest)) 
{
   File.Move(dest, Path.GetTempFileName());
}
File.Move(source, dest);
0 голосов
/ 13 октября 2009

Если вы предпочитаете поведение в стиле 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 октября 2009

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

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

File.Move("myotherfile.txt","myfile.txt");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...