C# Change current FileInfo file?

1.6k views Asked by At

I'd like to change the file that the FileInfo object is currently using. Let say I want to loop through 1000 files.

FileInfo myFile = new FileInfo("myfile.txt");

myFile.ChangeFile("myfile2.txt");

How can I do this? Was hoping for .FileName =, but it's readonly.

2

There are 2 answers

2
David Heffernan On BEST ANSWER

You cannot do that. The file name is specified at construction and cannot be changed later.

2
BRAHIM Kamel On

You can't do this in c# you don't have a built-in function use this function instead

 private void ChangeFiles(string fPath, string fNewName)
{
    string fExt;
    string fFromName;
    string fToName;
    int i = 1;

    //copy all files from fPath to files array
    FileInfo[] files = new DirectoryInfo(fPath).GetFiles();
    //loop through all files
    foreach (var f in files)
    {
        //get the filename without the extension
        fFromName = Path.GetFileNameWithoutExtension(f.Name);
        //get the file extension
        fExt = Path.GetExtension(f.Name);

        //set fFromName to the path + name of the existing file
        fFromName = string.Format("{0}{1}", fPath, f.Name);
        //set the fToName as path + new name + _i + file extension
        fToName = string.Format("{0}{1}_{2}{3}", fPath, fNewName,i.ToString(), fExt);

        //rename the file by moving to the same place and renaming
        File.Move(fFromName, fToName);
        //increment i
        i++;
    }
}