Export (0) Print
Expand All

FileInfo.MoveTo Method

Moves a specified file to a new location, providing the option to specify a new file name.

Namespace:  System.IO
Assembly:  mscorlib (in mscorlib.dll)

public void MoveTo(
	string destFileName
)

Parameters

destFileName
Type: System.String

The path to move the file to, which can specify a different file name.

ExceptionCondition
IOException

An I/O error occurs, such as the destination file already exists or the destination device is not ready.

ArgumentNullException

destFileName is null.

ArgumentException

destFileName is empty, contains only white spaces, or contains invalid characters.

SecurityException

The caller does not have the required permission.

UnauthorizedAccessException

destFileName is read-only or is a directory.

FileNotFoundException

The file is not found.

DirectoryNotFoundException

The specified path is invalid, such as being on an unmapped drive.

PathTooLongException

The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 characters.

NotSupportedException

destFileName contains a colon (:) in the middle of the string.

This method works across disk volumes. For example, the file c:\MyFile.txt can be moved to d:\public and renamed NewFile.txt.

The following example demonstrates moving a file to a different location and renaming the file.


using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.IO;
using System.Reflection;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;




namespace Microsoft.Samples.MoveTo.CS 
{

	class Program 
	{
		private static string sourcePath = Environment.GetFolderPath
			(Environment.SpecialFolder.MyDocuments) + 
			@"\FileInfoTestDirectory\MoveFrom\FromFile.xml";
		
		private static string destPath = Environment.GetFolderPath
			(Environment.SpecialFolder.MyDocuments) + 
			@"\FileInfoTestDirectory\DestFile.xml";
		// 
		// The main entry point for the application. 
		//
		[STAThread()] static void Main () 
		{
			// Change Console properties to make it obvious that  
			// the application is starting.
			Console.Clear();
			// Move it to the upper left corner of the screen.
			Console.SetWindowPosition(0, 0);
			// Make it very large.
			Console.SetWindowSize(Console.LargestWindowWidth - 24,
				Console.LargestWindowHeight - 16);
			Console.WriteLine("Welcome.");
			Console.WriteLine("This application demonstrates the FileInfo.MoveTo method.");
			Console.WriteLine("Press any key to start.");
			string s = Console.ReadLine();
			Console.Write("    Checking whether ");
			Console.Write(sourcePath);
			Console.WriteLine(" exists.");
			FileInfo fInfo = new FileInfo (sourcePath);
			EnsureSourceFileExists();
			DisplayFileProperties(fInfo);
			Console.WriteLine("Preparing to move the file to ");
			Console.Write(destPath);
			Console.WriteLine(".");
			MoveFile(fInfo);
			DisplayFileProperties(fInfo);
			Console.WriteLine("Preparing to delete directories.");
			DeleteFiles();
			Console.WriteLine("Press the ENTER key to close this application.");
			s = Console.ReadLine();
		}
		// 
		// Moves the supplied FileInfo instance to destPath. 
		// 
		private static void MoveFile(FileInfo fInfo) 
		{
			try 
			{
				fInfo.MoveTo(destPath);
				Console.WriteLine("File moved to ");
				Console.WriteLine(destPath);
			} catch (Exception ex) {
				DisplayException(ex);
			}
		}
		// 
		// Ensures that the test directories  
		// and the file FromFile.xml all exist. 
		//  
		private static void EnsureSourceFileExists() 
		{
			FileInfo fInfo = new FileInfo(sourcePath);
			string dirPath = fInfo.Directory.FullName;
			if (!Directory.Exists(dirPath)) 
			{
				Directory.CreateDirectory(dirPath);
			}
			if (File.Exists(destPath)) 
			{
				File.Delete(destPath);
			}
			Console.Write("Creating file ");
			Console.Write(fInfo.FullName);
			Console.WriteLine(".");
			try 
			{
				if (!fInfo.Exists) 
				{
					Console.WriteLine("Adding data to the file.");
					WriteFileContent(10);
					Console.WriteLine("Successfully created the file.");
				}
			} 
			catch (Exception ex) 
			{
				DisplayException(ex);
			} 
			finally 
			{
				dirPath = null;
			}
		}
		// 
		// Creates and saves an Xml file to sourcePath. 
		// 
		private static void WriteFileContent(int totalElements) 
		{
			XmlDocument doc = new XmlDocument();
			doc.PreserveWhitespace = true;
			doc.AppendChild(doc.CreateXmlDeclaration("1.0", null, "yes"));
			doc.AppendChild(doc.CreateWhitespace("\r\n"));
			XmlElement root = doc.CreateElement("FileInfo.MoveTo");
			root.AppendChild(doc.CreateWhitespace("\r\n"));
			int index = 0;
			XmlElement elem;
			while (index < totalElements) 
			{
				
				elem = doc.CreateElement("MyElement");
				elem.SetAttribute("Index", index.ToString());
				elem.AppendChild(doc.CreateWhitespace("\r\n"));
				elem.AppendChild(doc.CreateTextNode(String.Format
					("MyElement at position {0}.", index)));
				elem.AppendChild(doc.CreateWhitespace("\r\n"));
				root.AppendChild(elem);
				root.AppendChild(doc.CreateWhitespace("\r\n"));
				index++;
			}
			doc.AppendChild(root);
			doc.AppendChild(doc.CreateWhitespace("\r\n"));
			doc.Save(sourcePath);
			elem = null;
			root = null;
			doc = null;
		}
		// 
		// Displays FullName, CreationTime, and LastWriteTime of the supplied 
		// FileInfo instance, then displays the text of the file. 
		// 
		private static void DisplayFileProperties(FileInfo fInfo) 
		{
			Console.WriteLine("The FileInfo instance shows these property values.");
			StreamReader reader = null;
			try 
			{
				Console.Write("FullName: ");
				Console.WriteLine(fInfo.FullName);
				Console.Write("CreationTime: ");
				Console.WriteLine(fInfo.CreationTime);
				Console.Write("LastWriteTime: ");
				Console.WriteLine(fInfo.LastWriteTime);
				Console.WriteLine();
				Console.WriteLine("File contents:");
				Console.WriteLine();
				reader = new StreamReader(fInfo.FullName);
				while (!reader.EndOfStream) 
				{
					Console.WriteLine(reader.ReadLine());
				}
				Console.WriteLine();
			} 
			catch (Exception ex) 
			{
				DisplayException(ex);
			} 
			finally 
			{
				if (reader != null) 
				{
					reader.Close();
				}
				reader = null;
			}
		}
		// 
		// Deletes the test directory and all its files and subdirectories. 
		// 
		private static void DeleteFiles() 
		{
			try 
			{
				DirectoryInfo dInfo = new DirectoryInfo(Environment.GetFolderPath
					(Environment.SpecialFolder.MyDocuments) + "\\FileInfoTestDirectory");
				if (dInfo.Exists) 
				{
					dInfo.Delete(true);
					Console.WriteLine("Successfully deleted directories and files.");
				}
				dInfo = null;
			} 
			catch (Exception ex) 
			{
				DisplayException(ex);
			}
		}
		// 
		// Displays information about the supplied Exception. This 
		// code is not suitable for production applications. 
		// 
		private static void DisplayException(Exception ex) 
		{
			StringBuilder sb = new StringBuilder();
			sb.Append("An exception of type \"");
			sb.Append(ex.GetType().FullName);
			sb.Append("\" has occurred.\r\n");
			sb.Append(ex.Message);
			sb.Append("\r\nStack trace information:\r\n");
			MatchCollection matchCol = Regex.Matches(ex.StackTrace,
@"(at\s)(.+)(\.)([^\.]*)(\()([^\)]*)(\))((\sin\s)(.+)(:line )([\d]*))?");
			int L = matchCol.Count;
			string[] argList;
			Match matchObj;
			int y, K;
			for(int x = 0; x < L; x++) 
			{
				matchObj = matchCol[x];
				sb.Append(matchObj.Result("\r\n\r\n$1 $2$3$4$5"));
				argList = matchObj.Groups[6].Value.Split(new char[] { ',' });
				K = argList.Length;
				for (y = 0; y < K; y++) 
				{
					sb.Append("\r\n    ");
					sb.Append(argList[y].Trim().Replace(" ", "        "));
					sb.Append(',');
				}
				sb.Remove(sb.Length - 1, 1);
				sb.Append("\r\n)");
				if (0 < matchObj.Groups[8].Length) 
				{
					sb.Append(matchObj.Result("\r\n$10\r\nline $12"));
				}
			}
			argList = null;
			matchObj = null;
			matchCol = null;
			Console.WriteLine(sb.ToString());
			sb = null;
		}
	}
}
//This code produces output similar to the following;  
//results may vary based on the computer/file structure/etc.: 
// 
// Welcome. 
// This application demonstrates the FileInfo.MoveTo method. 
// Press any key to start. 
// 
//     Checking whether C:\Documents and Settings\MyComputer\My Documents\FileInfoTestDirectory\MoveFrom\FromFile.xml exists. 
// Creating file C:\Documents and Settings\MyComputer\My Documents\FileInfoTestDirectory\MoveFrom\FromFile.xml. 
// Adding data to the file. 
// Successfully created the file. 
// The FileInfo instance shows these property values. 
// FullName: C:\Documents and Settings\MyComputer\My Documents\FileInfoTestDirectory\MoveFrom\FromFile.xml 
// CreationTime: 4/18/2006 1:24:19 PM 
// LastWriteTime: 4/18/2006 1:24:19 PM 
// 
// File contents: 
// 
// <?xml version="1.0" standalone="yes"?>
// <FileInfo.MoveTo> 
// <MyElement Index="0">
// MyElement at position 0. 
// </MyElement> 
// <MyElement Index="1">
// MyElement at position 1. 
// </MyElement> 
// <MyElement Index="2">
// MyElement at position 2. 
// </MyElement> 
// <MyElement Index="3">
// MyElement at position 3. 
// </MyElement> 
// <MyElement Index="4">
// MyElement at position 4. 
// </MyElement> 
// <MyElement Index="5">
// MyElement at position 5. 
// </MyElement> 
// <MyElement Index="6">
// MyElement at position 6. 
// </MyElement> 
// <MyElement Index="7">
// MyElement at position 7. 
// </MyElement> 
// <MyElement Index="8">
// MyElement at position 8. 
// </MyElement> 
// <MyElement Index="9">
// MyElement at position 9. 
// </MyElement> 
// </FileInfo.MoveTo> 

// Preparing to move the file to 
// C:\Documents and Settings\MYComputer\My Documents\FileInfoTestDirectory\DestFile.xml. 
// File moved to 
// C:\Documents and Settings\MYComputer\My Documents\FileInfoTestDirectory\DestFile.xml 
// The FileInfo instance shows these property values. 
// FullName: C:\Documents and Settings\MYComputer\My Documents\FileInfoTestDirectory\DestFile.xml 
// CreationTime: 4/18/2006 1:24:19 PM 
// LastWriteTime: 4/18/2006 1:24:19 PM 
//  
// File contents: 
//  
// <?xml version="1.0" standalone="yes"?>
// <FileInfo.MoveTo> 
// <MyElement Index="0">
// MyElement at position 0. 
// </MyElement> 
// <MyElement Index="1">
// MyElement at position 1. 
// </MyElement> 
// <MyElement Index="2">
// MyElement at position 2. 
// </MyElement> 
// <MyElement Index="3">
// MyElement at position 3. 
// </MyElement> 
// <MyElement Index="4">
// MyElement at position 4. 
// </MyElement> 
// <MyElement Index="5">
// MyElement at position 5. 
// </MyElement> 
// <MyElement Index="6">
// MyElement at position 6. 
// </MyElement> 
// <MyElement Index="7">
// MyElement at position 7. 
// </MyElement> 
// <MyElement Index="8">
// MyElement at position 8. 
// </MyElement> 
// <MyElement Index="9">
// MyElement at position 9. 
// </MyElement> 
// </FileInfo.MoveTo> 
//  
// Preparing to delete directories. 
// Successfully deleted directories and files. 
// Press the ENTER key to close this application.

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone Silverlight 8.1, Windows Phone Silverlight 8

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft