C#程序中創(chuàng)建、復(fù)制、移動(dòng)、刪除文件或文件夾的示例
創(chuàng)建文件或文件夾
您可通過(guò)編程方式在您的計(jì)算機(jī)上創(chuàng)建文件夾、子文件夾和子文件夾中的文件,并將數(shù)據(jù)寫(xiě)入文件。
public class CreateFileOrFolder
{
static void Main()
{
string folderName = @"c:\Top-Level Folder";
string pathString = System.IO.Path.Combine(folderName, "SubFolder");
string pathString2 = @"c:\Top-Level Folder\SubFolder2";
System.IO.Directory.CreateDirectory(pathString);
string fileName = System.IO.Path.GetRandomFileName();
pathString = System.IO.Path.Combine(pathString, fileName);
Console.WriteLine("Path to my file: {0}\n", pathString);
if (!System.IO.File.Exists(pathString))
{
using (System.IO.FileStream fs = System.IO.File.Create(pathString))
{
for (byte i = 0; i < 100; i++)
{
fs.WriteByte(i);
}
}
}
else
{
Console.WriteLine("File \"{0}\" already exists.", fileName);
return;
}
try
{
byte[] readBuffer = System.IO.File.ReadAllBytes(pathString);
foreach (byte b in readBuffer)
{
Console.Write(b + " ");
}
Console.WriteLine();
}
catch (System.IO.IOException e)
{
Console.WriteLine(e.Message);
}
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
輸出:
Path to my file: c:\Top-Level Folder\SubFolder\ttxvauxe.vv0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 8 3 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
如果該文件夾已存在,則 CreateDirectory 不執(zhí)行任何操作,且不會(huì)引發(fā)異常。但是,F(xiàn)ile.Create 用新的文件替換現(xiàn)有文件。該示例使用一個(gè) if-else 語(yǔ)句阻止現(xiàn)有文件被替換。
通過(guò)在示例中做出以下更改,您可以根據(jù)具有某個(gè)名稱(chēng)的程序是否存在來(lái)指定不同的結(jié)果。如果該文件不存在,代碼將創(chuàng)建一個(gè)文件。如果該文件存在,代碼將把數(shù)據(jù)添加到該文件中。
指定一個(gè)非隨機(jī)文件名。
// Comment out the following line. //string fileName = System.IO.Path.GetRandomFileName(); // Replace that line with the following assignment. string fileName = "MyNewFile.txt";
用以下代碼中的 using 語(yǔ)句替換 if-else 語(yǔ)句。
using (System.IO.FileStream fs = new System.IO.FileStream(pathString, FileMode.Append))
{
for (byte i = 0; i < 100; i++)
{
fs.WriteByte(i);
}
}
運(yùn)行該示例若干次以驗(yàn)證數(shù)據(jù)是否每次都添加到文件中。
復(fù)制、刪除和移動(dòng)文件和文件夾
以下示例說(shuō)明如何使用 System.IO 命名空間中的 System.IO.File、System.IO.Directory、System.IO.FileInfo 和 System.IO.DirectoryInfo 類(lèi)以同步方式復(fù)制、移動(dòng)和刪除文件和文件夾。 這些示例沒(méi)有提供進(jìn)度欄或其他任何用戶(hù)界面。
。
示例
下面的示例演示如何復(fù)制文件和目錄。
public class SimpleFileCopy
{
static void Main()
{
string fileName = "test.txt";
string sourcePath = @"C:\Users\Public\TestFolder";
string targetPath = @"C:\Users\Public\TestFolder\SubDir";
// Use Path class to manipulate file and directory paths.
string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
string destFile = System.IO.Path.Combine(targetPath, fileName);
// To copy a folder's contents to a new location:
// Create a new target folder, if necessary.
if (!System.IO.Directory.Exists(targetPath))
{
System.IO.Directory.CreateDirectory(targetPath);
}
// To copy a file to another location and
// overwrite the destination file if it already exists.
System.IO.File.Copy(sourceFile, destFile, true);
// To copy all the files in one directory to another directory.
// Get the files in the source folder. (To recursively iterate through
// all subfolders under the current directory, see
// "How to: Iterate Through a Directory Tree.")
// Note: Check for target path was performed previously
// in this code example.
if (System.IO.Directory.Exists(sourcePath))
{
string[] files = System.IO.Directory.GetFiles(sourcePath);
// Copy the files and overwrite destination files if they already exist.
foreach (string s in files)
{
// Use static Path methods to extract only the file name from the path.
fileName = System.IO.Path.GetFileName(s);
destFile = System.IO.Path.Combine(targetPath, fileName);
System.IO.File.Copy(s, destFile, true);
}
}
else
{
Console.WriteLine("Source path does not exist!");
}
// Keep console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
下面的示例演示如何移動(dòng)文件和目錄。
public class SimpleFileMove
{
static void Main()
{
string sourceFile = @"C:\Users\Public\public\test.txt";
string destinationFile = @"C:\Users\Public\private\test.txt";
// To move a file or folder to a new location:
System.IO.File.Move(sourceFile, destinationFile);
// To move an entire directory. To programmatically modify or combine
// path strings, use the System.IO.Path class.
System.IO.Directory.Move(@"C:\Users\Public\public\test\", @"C:\Users\Public\private");
}
}
下面的示例演示如何刪除文件和目錄。
public class SimpleFileDelete
{
static void Main()
{
// Delete a file by using File class static method...
if(System.IO.File.Exists(@"C:\Users\Public\DeleteTest\test.txt"))
{
// Use a try block to catch IOExceptions, to
// handle the case of the file already being
// opened by another process.
try
{
System.IO.File.Delete(@"C:\Users\Public\DeleteTest\test.txt");
}
catch (System.IO.IOException e)
{
Console.WriteLine(e.Message);
return;
}
}
// ...or by using FileInfo instance method.
System.IO.FileInfo fi = new System.IO.FileInfo(@"C:\Users\Public\DeleteTest\test2.txt");
try
{
fi.Delete();
}
catch (System.IO.IOException e)
{
Console.WriteLine(e.Message);
}
// Delete a directory. Must be writable or empty.
try
{
System.IO.Directory.Delete(@"C:\Users\Public\DeleteTest");
}
catch (System.IO.IOException e)
{
Console.WriteLine(e.Message);
}
// Delete a directory and all subdirectories with Directory static method...
if(System.IO.Directory.Exists(@"C:\Users\Public\DeleteTest"))
{
try
{
System.IO.Directory.Delete(@"C:\Users\Public\DeleteTest", true);
}
catch (System.IO.IOException e)
{
Console.WriteLine(e.Message);
}
}
// ...or with DirectoryInfo instance method.
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"C:\Users\Public\public");
// Delete this dir and all subdirs.
try
{
di.Delete(true);
}
catch (System.IO.IOException e)
{
Console.WriteLine(e.Message);
}
}
}
相關(guān)文章
C#跨平臺(tái)開(kāi)發(fā)之使用C/C++生成的動(dòng)態(tài)鏈接庫(kù)
這篇文章介紹了C#跨平臺(tái)開(kāi)發(fā)之使用C/C++生成的動(dòng)態(tài)鏈接庫(kù),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01
C#連接加密的Sqlite數(shù)據(jù)庫(kù)的方法
對(duì)數(shù)據(jù)加密分兩種,一種是對(duì)數(shù)據(jù)庫(kù)本身進(jìn)行加密,另一種是對(duì)數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行加密,下面通過(guò)本文給大家介紹C#連接加密的Sqlite數(shù)據(jù)庫(kù)的方法,感興趣的朋友一起看看吧2017-08-08
C#實(shí)現(xiàn)子窗體與父窗體通信方法實(shí)例總結(jié)
這篇文章主要介紹了C#實(shí)現(xiàn)子窗體與父窗體通信方法,實(shí)例總結(jié)了常用的四種窗體通信方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
C#中LINQ?to?DataSet操作及DataTable與LINQ相互轉(zhuǎn)換
這篇文章介紹了C#中LINQ?to?DataSet操作及DataTable與LINQ相互轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05

