如果符合某些條件,我想將文件從一個目錄複製到另一個目錄而不刪除原始文件。我也想將新文件的名稱設置爲特定的值。C#將文件複製到另一個名稱不同的位置
我使用C#並使用FileInfo類。雖然它有CopyTo方法。它不給我選擇設置文件名。 MoveTo方法允許我重命名文件,刪除原始位置中的文件。
什麼是最好的方式去做這件事?
如果符合某些條件,我想將文件從一個目錄複製到另一個目錄而不刪除原始文件。我也想將新文件的名稱設置爲特定的值。C#將文件複製到另一個名稱不同的位置
我使用C#並使用FileInfo類。雖然它有CopyTo方法。它不給我選擇設置文件名。 MoveTo方法允許我重命名文件,刪除原始位置中的文件。
什麼是最好的方式去做這件事?
System.IO.File.Copy(oldPathAndName, newPathAndName);
你也可以嘗試的方法Copy:
File.Copy(@"c:\work\foo.txt", @"c:\data\bar.txt")
您可以使用File.Copy(oldFilePath,newFilePath)方法或另一種方法是,使用的StreamReader成字符串讀取文件,然後使用的StreamWriter寫該文件到目標位置。
您的代碼可能是這樣的:
StreamReader reader = new StreamReader("C:\foo.txt");
string fileContent = reader.ReadToEnd();
StreamWriter writer = new StreamWriter("D:\bar.txt");
writer.Write(fileContent);
您可以添加異常處理代碼...
你不需要一個讀寫器 - 只需要流就可以了。也;如果您僅複製(默認)流,則不會複製NTFS備選流和審計/安全性等內容。 – 2010-10-07 12:13:20
@March Gravell, 感謝您的輸入。我不太瞭解NTFS替代流。猜猜需要了解它。 – Shekhar 2010-10-07 12:15:28
可以在有System.IO.File類使用Copy方法。
一種方法是:
File.Copy(oldFilePathWithFileName, newFilePathWithFileName);
或者你可以使用FileInfo.CopyTo()方法太像這樣:
FileInfo file = new FileInfo(oldFilePathWithFileName);
file.CopyTo(newFilePathWithFileName);
例子:
File.Copy(@"c:\a.txt", @"c:\b.txt");
或
FileInfo file = new FileInfo(@"c:\a.txt");
file.CopyTo(@"c:\b.txt");
如果你只想使用FileInfo類 試試這個
string oldPath = @"C:\MyFolder\Myfile.xyz";
string newpath = @"C:\NewFolder\";
string newFileName = "new file name";
FileInfo f1 = new FileInfo(oldPath);
if(f1.Exists)
{
if(!Directory.Exists(newpath))
{
Directory.CreateDirectory(newpath);
}
f1.CopyTo(string.Format("{0}{1}{2}", newpath, newFileName, f1.Extension));
}
StreamReader reader = new StreamReader(Oldfilepath);
string fileContent = reader.ReadToEnd();
StreamWriter writer = new StreamWriter(NewFilePath);
writer.Write(fileContent);
請注意,reader.ReadToEnd()會將所有文件內容加載到內存中。理論上可接受的最大文件大小爲2GB,但即使使用相對較小的文件,這也可能表示問題,尤其是如果您的進程內存不足,則情況更是如此。 – Val 2014-01-27 16:10:56
您可以用最簡單的方法是這樣的:
System.IO.File.Replace(string sourceFileName, string destinationFileName, string destinationBackupFileName);
這將帶你要求的一切照顧。
File.Copy(@"C:\oldFile.txt", @"C:\newFile.txt", true);
請不要忘記覆蓋以前的文件!確保添加第三個參數,通過添加第三個參數,允許覆蓋文件。否則,你可以使用try catch來處理異常。
問候, 摹
會誰downvoted它詳細地談一談? – w69rdy 2010-10-07 12:21:38