FileInfo.MoveTo 方法
将指定文件移到新位置,并提供指定新文件名的选项。
**命名空间:**System.IO
**程序集:**mscorlib(在 mscorlib.dll 中)
语法
声明
Public Sub MoveTo ( _
destFileName As String _
)
用法
Dim instance As FileInfo
Dim destFileName As String
instance.MoveTo(destFileName)
public void MoveTo (
string destFileName
)
public:
void MoveTo (
String^ destFileName
)
public void MoveTo (
String destFileName
)
public function MoveTo (
destFileName : String
)
参数
- destFileName
要将文件移动到的路径,可以指定另一个文件名。
异常
异常类型 | 条件 |
---|---|
发生 I/O 错误,如目标文件已经存在或目标设备未准备好。 |
|
destFileName 为 空引用(在 Visual Basic 中为 Nothing)。 |
|
destFileName 为空,仅包含空白,或包含无效字符。 |
|
调用方没有所要求的权限。 |
|
destFileName 为只读,或者是一个目录。 |
|
找不到该文件。 |
|
指定的路径无效,比如在未映射的驱动器上。 |
|
指定的路径、文件名或者两者都超出了系统定义的最大长度。例如,在基于 Windows 的平台上,路径必须小于 248 个字符,文件名必须小于 260 个字符。 |
|
destFileName 的字符串中间包含一个冒号 (:)。 |
备注
此方法可以跨磁盘卷工作。例如,可以将 c:\MyFile.txt 文件移动到 d:\public,并重命名为 NewFile.txt。
下表列出了其他典型或相关的 I/O 任务的示例。
若要执行此操作... |
请参见本主题中的示例... |
---|---|
写入文本文件。 |
|
读取文本文件。 |
|
向文件中追加文本。 |
|
重命名或移动目录。 |
Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows CE 平台说明: 某些设备文件系统不支持相对路径。指定绝对路径信息。
示例
下面的示例演示了如何将一个文件移动至另一位置并重命名该文件。
Imports System
Imports System.IO
Imports System.Text
Imports System.Text.RegularExpressions
Imports System.Xml
Module Program
Private sourcePath As String = Environment.GetFolderPath _
(Environment.SpecialFolder.MyDocuments) & _
"\FileInfoTestDirectory\MoveFrom\FromFile.xml"
'
Private destPath As String = Environment.GetFolderPath _
(Environment.SpecialFolder.MyDocuments) & _
"\FileInfoTestDirectory\DestFile.xml"
'
' The main entry point for the application.
'
<STAThread()> Sub 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.")
Dim s As String = Console.ReadLine()
Console.Write(" Checking whether ")
Console.Write(sourcePath)
Console.WriteLine(" exists.")
Dim fInfo As FileInfo = 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()
End Sub
'
' Moves the supplied FileInfo instance to destPath.
'
Private Sub MoveFile(ByVal fInfo As FileInfo)
Try
fInfo.MoveTo(destPath)
Console.WriteLine("File moved to ")
Console.WriteLine(destPath)
Catch ex As Exception
DisplayException(ex)
End Try
End Sub
'
' Ensures that the test directories
' and the file FromFile.xml all exist.
'
Private Sub EnsureSourceFileExists()
' Create a FileInfo instance, and get the full path
' to the parent directory.
Dim fInfo As FileInfo = New FileInfo(sourcePath)
Dim dirPath As String = fInfo.Directory.FullName
' If the directory does not exist, create it.
If Not Directory.Exists(dirPath) Then
Directory.CreateDirectory(dirPath)
End If
' If DestFile.xml exists, delete it.
If File.Exists(destPath) Then
File.Delete(destPath)
End If
Console.Write("Creating file ")
Console.Write(fInfo.FullName)
Console.WriteLine(".")
Try
If Not fInfo.Exists Then
' Call WriteFileContent to create the file.
Console.WriteLine("Adding data to the file.")
WriteFileContent(10)
Console.WriteLine("Successfully created the file.")
End If
Catch ex As Exception
DisplayException(ex)
Finally
dirPath = Nothing
fInfo = Nothing
End Try
End Sub
'
' Creates and saves an Xml file to sourcePath.
'
Private Sub WriteFileContent(ByVal totalElements As Integer)
Dim doc As New XmlDocument()
doc.PreserveWhitespace = True
doc.AppendChild(doc.CreateXmlDeclaration("1.0", Nothing, "yes"))
doc.AppendChild(doc.CreateWhitespace(ControlChars.CrLf))
Dim root As XmlElement = doc.CreateElement("FileInfo.MoveTo")
Dim index As Integer = 0
Dim elem As XmlElement
While index < totalElements
elem = doc.CreateElement("MyElement")
elem.SetAttribute("Index", index.ToString())
elem.AppendChild(doc.CreateWhitespace(ControlChars.CrLf))
elem.AppendChild(doc.CreateTextNode(String.Format _
("MyElement at position {0}.", index)))
elem.AppendChild(doc.CreateWhitespace(ControlChars.CrLf))
root.AppendChild(elem)
index += 1
End While
doc.AppendChild(root)
doc.AppendChild(doc.CreateWhitespace(ControlChars.CrLf))
doc.Save(sourcePath)
End Sub
'
' Displays FullName, CreationTime, and LastWriteTime of the supplied
' FileInfo instance, then displays the text of the file.
'
Private Sub DisplayFileProperties(ByVal fInfo As FileInfo)
Console.WriteLine("The FileInfo instance shows these property values.")
Dim reader As StreamReader = Nothing
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 Not reader.EndOfStream
Console.WriteLine(reader.ReadLine())
End While
Console.WriteLine()
Catch ex As Exception
DisplayException(ex)
Finally
If Not reader Is Nothing Then
reader.Close()
reader = Nothing
End If
End Try
End Sub
'
' Deletes the test directory and all its files and subdirectories.
'
Private Sub DeleteFiles()
Try
Dim dInfo As DirectoryInfo = New DirectoryInfo(Environment.GetFolderPath _
(Environment.SpecialFolder.MyDocuments) + "\FileInfoTestDirectory")
If dInfo.Exists Then
dInfo.Delete(True)
Console.WriteLine("Successfully deleted directories and files.")
End If
dInfo = Nothing
Catch ex As Exception
DisplayException(ex)
End Try
End Sub
'
' Displays information about the supplied Exception. This
' code is not suitable for production applications.
'
Private Sub DisplayException(ByVal ex As Exception)
Dim sb As New StringBuilder("An exception of type """)
sb.Append(ex.GetType().FullName)
sb.Append(""" has occurred.")
sb.Append(ControlChars.CrLf)
sb.Append(ex.Message)
sb.Append(ControlChars.CrLf)
sb.Append("Stack trace information:")
sb.Append(ControlChars.CrLf)
Dim matchCol As MatchCollection = Regex.Matches(ex.StackTrace, _
"(at\s)(.+)(\.)([^\.]*)(\()([^\)]*)(\))((\sin\s)(.+)(:line )([\d]*))?")
Dim L As Integer = matchCol.Count
Dim y, K As Integer
Dim argList() As String
Dim matchObj As Match
Dim x As Integer = 0
While x < L
matchObj = matchCol(x)
sb.Append(ControlChars.CrLf)
sb.Append(ControlChars.CrLf)
sb.Append(matchObj.Result("$1 $2$3$4$5"))
argList = matchObj.Groups(6).Value.Split(New Char() {","})
K = argList.Length
y = 0
While y < K
sb.Append(ControlChars.CrLf)
sb.Append(" ")
sb.Append(argList(y).Trim().Replace(" ", " "))
sb.Append(",")
y += 1
End While
sb.Remove(sb.Length - 1, 1)
sb.Append(ControlChars.CrLf)
If 0 < matchObj.Groups(8).Length Then
sb.Append(ControlChars.CrLf)
sb.Append(matchObj.Result("$10"))
sb.Append(ControlChars.CrLf)
sb.Append(matchObj.Result("line $12"))
End If
x += 1
End While
argList = Nothing
matchObj = Nothing
matchCol = Nothing
Console.WriteLine(sb.ToString())
sb = Nothing
Return
End Sub
End Module
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;
}
}
}
.NET Framework 安全性
- FileIOPermission 用于读取和写入文件。关联的枚举:FileIOPermissionAccess.Read、FileIOPermissionAccess.Write
平台
Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition
.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。
版本信息
.NET Framework
受以下版本支持:2.0、1.1、1.0
.NET Compact Framework
受以下版本支持:2.0、1.0
请参见
参考
FileInfo 类
FileInfo 成员
System.IO 命名空间