Search code examples
c#filecsvmove

Cannot Create a file when using File.Move Error


I have a .csv file as the attached image which has a list of folders and files . I would like to read the .csv file and recreate the same folder structure under different folder.

enter image description here

Say for example I have C:\Data\SourceFolder\Folder2\Folder4\File1.txt , I would like the file to be moved to C:\Data\FilesCopiedfromC\SourceFolder\Folder2\Folder4\File1.txt . In the above destinaton path , the C:\Data\FilesCopiedfromC is going to be the same always . I am able to create the folder structure in the destination but when I do the file.move from source to destination I get a "File cannot be created when it already exists error".

try
        {
            string inputfile = textBox1.Text.ToString();
            using(StreamReader reader = new StreamReader(inputfile))
            {
                string headerline = reader.ReadLine();
                Boolean firstline = true;
                string line = string.Empty;
                 string SourceFileNameCSV;
                string SourceFilePathCSV,totalSourceFilePath, strConstructedDestinationfullpath;
                string[] parts;
                while ((line = reader.ReadLine()) != null)
                {
                    char[] delimiters = new char[] { ',' };
                    parts= line.Split(delimiters);
                    if (parts.Length > 0)
                    {
                        SourceFilePathCSV = parts[0];
                        SourceFileNameCSV = parts[1];
                        totalSourceFilePath = SourceFilePathCSV + "\\" + SourceFileNameCSV;
                        strDestinationDynamicPath = SourceFilePathCSV.Replace("C:\\Data\\", " ").TrimEnd();
                    strConstructedDestinationfullpath = Path.Combine(strDestinationStaticPath, strDestinationDynamicPath);
                        if (!string.IsNullOrEmpty(strConstructedDestinationfullpath))
                        {
                            if (!Directory.Exists(strDestinationDynamicPath))
                            {
                                Directory.CreateDirectory(strConstructedDestinationfullpath);
                            }
                            // File.Move(totalSourceFilePath, strConstructedDestinationfullpath);
                        }
                    }

                }
            }

        }//try

Any help is appreciated.


Solution

  • It's because, apparently, the file already exists in the destination. What you can do is check if the file exists an delete if so:

    if (System.IO.File.Exists("filename"))
    
    {
    
    //delete
    
       System.IO.File.Delete("filename"); //try/catch exception handling 
      needs to be implemented
    
    }