創建文件或文件夾
您可通過編程方式在您的計算機上創建文件夾、子文件夾和子文件夾中的文件,并將數據寫入文件。
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 2930 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 5657 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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
如果該文件夾已存在,則 CreateDirectory 不執行任何操作,且不會引發異常。但是,File.Create 用新的文件替換現有文件。該示例使用一個 if-else 語句阻止現有文件被替換。
通過在示例中做出以下更改,您可以根據具有某個名稱的程序是否存在來指定不同的結果。如果該文件不存在,代碼將創建一個文件。如果該文件存在,代碼將把數據添加到該文件中。
指定一個非隨機文件名。
// Comment out the following line.//string fileName = System.IO.Path.GetRandomFileName();// Replace that line with the following assignment.string fileName = "MyNewFile.txt";
用以下代碼中的 using 語句替換 if-else 語句。
using (System.IO.FileStream fs = new System.IO.FileStream(pathString, FileMode.Append)) { for (byte i = 0; i < 100; i++) { fs.WriteByte(i); }}
運行該示例若干次以驗證數據是否每次都添加到文件中。
復制、刪除和移動文件和文件夾
以下示例說明如何使用 System.IO 命名空間中的 System.IO.File、System.IO.Directory、System.IO.FileInfo 和 System.IO.DirectoryInfo 類以同步方式復制、移動和刪除文件和文件夾。 這些示例沒有提供進度欄或其他任何用戶界面。
。
示例
下面的示例演示如何復制文件和目錄。
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(); }}
下面的示例演示如何移動文件和目錄。
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); } }}
新聞熱點
疑難解答