intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Thao tác với tập tin và thư mục trong C#

Chia sẻ: Trần Hồng Hưng | Ngày: | Loại File: DOCX | Số trang:139

140
lượt xem
11
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu "Thao tác với tập tin và thư mục trong C#" giới thiệu đến các bạn sơ đồ thừa kế các class, thao tác với File, thao tác với Directory, thao tác với FileInfo, DirectoryInfo, DriveInfo,... Mời các bạn cùng tham khảo nội dung tài liệu để nắm bắt nội dung chi tiết, với các bạn chuyên ngành Xã hội học thì đây là tài liệu tham khảo hữu ích.

Chủ đề:
Lưu

Nội dung Text: Thao tác với tập tin và thư mục trong C#

  1. Thao tác với tập tin và thư mục trong C# 1- Sơ đồ thừa kế các class 2- File 3- Directory 4- FileInfo 5- DirectoryInfo 6- DriveInfo 1- Sơ đồ thừa kế các class Class Mô tả File là một class tiện ích. Nó cung cấp các phương thức tĩnh cho việc tạo, copy, xóa,  File di chuyển và mở một file, và hỗ trợ tạo đối tượng FileStream. Directory là một class tiện ích. Nó cung cấp các phương thức tĩnh để tạo, di chuyển,  Directory và liệt kê các thư mục và các thư mục con. Class này không cho phép có class con. FileInfo là một class mô tả một file, nó cung cấp các thuộc tính, phương thức cho  FileInfo việc tạo, copy, xóa, di chuyển và mở file. Nó hỗ trợ tạo đối tượng FileStream. Class  này không cho phép có class con. DirectoryInf DirectoryInfo là một class đại diện cho một thư mục, nó cung cấp phương thức cho 
  2. việc tạo, di chuyển, liệt kê các thư mục và các thư mục con. Class này không cho  o phép có class con. DriveInfo DirveInfo là một class, nó cung truy cập các thông tin ổ cứng. 2- File File là một class tiện ích. Nó cung cấp các phương thức tĩnh cho việc tạo, copy, xóa, di chuyển và mở một file, và hỗ trợ tạo đối tượng FileStream. Ví dụ dưới đây kiểm tra xem một đường dẫn file có tồn tại hay không, nếu tồn tại xóa file này. DeleteFileDemo.cs ? 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.IO; 7   8 namespace FileDirectoryTutorial 9 { 10 class DeleteFileDemo { 11 public static void Main(string[] args) 12 { 13 string filePath = "C:/test/test.txt"; 14   15 // Kiểm tra file có tồn tại không. 16 if (File.Exists(filePath)) 17 { 18 // Xóa file File.Delete(filePath); 19   20 // Kiểm tra lại xem file còn tồn tại không. 21 if (!File.Exists(filePath)) 22 { 23 Console.WriteLine("File deleted..."); 24 } 25   } 26 else 27 { 28 Console.WriteLine("File test.txt does not yet exist!"); } 29   30
  3. 31 32 33 Console.ReadKey(); } 34 } 35   36 } 37 38 Chạy ví dụ: Đổi tên file là một hành động có thể bao gồm di chuyển file tới một thư mục khác và đổi tên file. Trong trường hợp file bị di chuyển tới một thư mục khác phải đảm bảo rằng thư mục mới tồn tại. RenameFileDemo.cs ? 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.IO; 7   8 namespace FileDirectoryTutorial 9 { 10 class RenameFileDemo { 11 public static void Main(string[] args) 12 {
  4. 13 14 15 16 String filePath = "C:/test/test.txt"; 17   18 if (File.Exists(filePath)) { 19 Console.WriteLine(filePath + " exist"); 20   21   22 Console.WriteLine("Please enter a new name for this file:"); 23   24 // String người dùng nhập vào. 25 // Ví dụ: C:/test/test2.txt 26 string newFilename = Console.ReadLine(); 27   28 if (newFilename != String.Empty) { 29 // Đổi tên file. 30 // Bạn có thể chuyển file tới một thư mục khác 31 // nhưng phải đảm bảo thư mục đó tồn tại // (nếu không ngoại lệ DirectoryNotFoundException sẽ được ném ra). 32 File.Move(filePath, newFilename); 33   34 if (File.Exists(newFilename)) 35 { 36 Console.WriteLine("The file was renamed to " + newFilename); 37 } 38 } } 39 else 40 { 41 Console.WriteLine("Path " + filePath + " does not exist."); 42 } 43   44 Console.ReadLine(); } 45 } 46   47 } 48 49 50 Chạy ví dụ: 3- Directory
  5. Directory là một class tiện ích. Nó cung cấp các phương thức tĩnh để tạo, di chuyển, và liệt kê các thư mục và các thư mục con. Class này không cho phép có class con. Ví dụ kiểm tra một đường dẫn thư mục có tồn tại hay không, nếu không tồn tại tạo thư mục đó, ghi ra thông tin thời gian tạo, lần ghi dữ liệu cuối vào thư mục, .... DirectoryInformationDemo.cs ? 1 2 3 using System; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Text; 7 using System.Threading.Tasks; 8 using System.IO; 9   10 namespace FileDirectoryTutorial 11 { 12 class DirectoryInformationDemo 13 { 14 public static void Main(string[] args) { 15 String dirPath = "C:/test/CSharp"; 16   17 // Kiểm tra xem đường dẫn thư mục tồn tại không. 18 bool  exist = Directory.Exists(dirPath); 19   20 // Nếu không tồn tại, tạo thư mục này. 21 if (!exist) 22 { Console.WriteLine(dirPath + " does not exist."); 23 Console.WriteLine("Create directory: " + dirPath); 24   25 // Tạo thư mục. 26 Directory.CreateDirectory(dirPath); 27 } 28   29 Console.WriteLine("Directory Information " + dirPath); 30   31 // In ra các thông tin thư mục trên. 32   // Thời gian tạo. 33 Console.WriteLine("Creation time: "+ Directory.GetCreationTime(dirPath)); 34   35 // Lần ghi dữ liệu cuối cùng vào thư mục. 36 Console.WriteLine("Last Write Time: " + Directory.GetLastWriteTime(dirPath)); 37   38 // Thông tin thư mục cha. DirectoryInfo parentInfo = Directory.GetParent(dirPath); 39 40   Console.WriteLine("Parent directory: " + parentInfo.FullName); 41 42   43   Console.Read(); 44 } 45 } 46   47 } 48 49
  6. Chạy ví dụ: Đổi tên thư mục: Bạn có thể thay đổi tên một thư mục. Nó có thể làm thư mục đó chuyển ra khỏi thư mục cha hiện tại. Nhưng bạn phải đảm bảo rằng thư mục cha mới đã tồn tại. Ví dụ dưới đây minh họa đổi tên một thư mục: RenameDirectoryDemo.cs ? 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.IO; 7   8 namespace FileDirectoryTutorial 9 { 10 class RenameDirectoryDemo { 11 public static void Main(string[] args) 12 { 13 // Một đường dẫn thư mục. 14 String dirPath = "C:/test/CSharp"; 15   16 // Nếu đường dẫn này tồn tại.
  7. 17 if (!Directory.Exists(dirPath)) 18 { Console.WriteLine(dirPath + " does not exist."); 19 Console.Read(); 20 // Kết thúc chương trình. 21 return; 22 } 23   Console.WriteLine(dirPath + " exist"); 24   25   26 Console.WriteLine("Please enter a new name for this directory:"); 27   28 // String người dùng nhập vào. 29 // Ví dụ: C:/test2/Java 30 string newDirname = Console.ReadLine(); 31   32 if (newDirname == String.Empty) 33 { Console.WriteLine("You not enter new directory name. Cancel rename."); 34 Console.Read(); 35 // Kết thúc chương trình. 36 return; } 37   38 // Nếu người dùng nhập vào đường dẫn thư mục mới đã tồn tại. 39 if (Directory.Exists(newDirname)) 40 { 41 Console.WriteLine("Cannot rename directory. New directory already exist."); 42 Console.Read(); // Kết thúc chương trình. 43 return; 44 } 45   46 DirectoryInfo parentInfo = Directory.GetParent(newDirname); 47   48 // Tạo thư mục cha của thư mục mới mà người dùng nhập vào. Directory.CreateDirectory(parentInfo.FullName); 49   50   51 // Đổi tên thư mục. 52 // Bạn có thể chuyển thư mục tới một thư mục khác 53 // nhưng phải đảm bảo thư mục đó tồn tại // (nếu không ngoại lệ DirectoryNotFoundException sẽ được ném ra). 54 Directory.Move(dirPath, newDirname); 55   56 if (Directory.Exists(newDirname)) 57 { 58 Console.WriteLine("The directory was renamed to " + newDirname); 59 } 60   61   62 Console.ReadLine(); } 63 } 64   65 } 66 67 68 69 70 71 72
  8. 73 74 Chạy ví dụ: Ví dụ dưới đây đệ quy và in ra tất cả các thư mục con, cháu,... của một thư mục. EnumeratingDirectoryDemo.cs ? 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.IO; 7   8 namespace FileDirectoryTutorial 9 { 10 class EnumeratingDirectoryDemo { 11 public static void Main(string[] args) 12 { 13 string dirPath = "C:/Windows/System32"; 14   15 PrintDirectory(dirPath); 16   17 Console.Read(); 18 } 19   20   // Phương thức đệ quy liệt kê các thư mục con của một thư mục. 21 public static void PrintDirectory(string dirPath) 22 { 23 try 24 { 25 // Một đối tượng có thể duyệt trên các thư mục con trực tiếp của thư mục dirPath // Nếu không có quyền truy cập thư mục 'dirPath' 26 // một ngoại lệ UnauthorizedAccessException sẽ được ném ra. 27 IEnumerable enums = Directory.EnumerateDirectories(dirPath); 28   29 // Danh sách 30 List dirs = new List(enums); 31   32 foreach (var dir in dirs) {
  9. 33 Console.WriteLine(dir); 34   35 // Đệ quy tìm kiếm các thư mục con. 36 PrintDirectory(dir); } 37 } 38 // Lỗi khi truy cập vào thư mục không có quyền. 39 catch (UnauthorizedAccessException e) 40 { 41 Console.WriteLine("Can not access directory: " + dirPath); Console.WriteLine(e.Message); 42 } 43 } 44 } 45   } Chạy ví dụ: 4- FileInfo FileInfo là một class mô tả một file, nó cung cấp các thuộc tính, phương thức cho việc tạo, copy, xóa, di chuyển và mở file. Nó hỗ trợ tạo đối tượng FileStream. Class này không cho phép có class con. Sự khác biệt giữa 2 class File và FileInfo đó là File là một class tiện ích các phương thức của nó là tĩnh, còn FileInfo đại diện cho một file cụ thể. FileInfoDemo.cs ? 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.IO; 7   8 namespace FileDirectoryTutorial 9 { 10 class FileInfoDemo { 11 static void Main(string[] args) 12 { 13 // Một đối tượng đại diện cho một file. 14 FileInfo testFile = new FileInfo("C:/test/test.txt"); 15  
  10. 16 // Ghi ra các thông tin. 17   18 if (testFile.Exists) 19 { Console.WriteLine(testFile.FullName + " exist."); 20   21 // Thông tin ngày tạo. 22 Console.WriteLine("Creation time: " + testFile.CreationTime); 23   24 // Thông tin ngày sửa cuối. 25 Console.WriteLine("Last Write Time " + testFile.LastWriteTime); 26   27 // Tên thư mục chứa. 28 Console.WriteLine("Directory Name: " + testFile.DirectoryName); } 29 else 30 { 31 Console.WriteLine(testFile.FullName + " does not exist."); 32 } Console.Read(); 33 } 34 } 35   } Chạy ví dụ: Đổi tên file là một hành động có thể bao gồm di chuyển file tới một thư mục khác và đổi tên file. Trong trường hợp file bị di chuyển tới một thư mục khác phải đảm bảo rằng thư mục mới tồn tại.
  11. RenameFileInfoDemo.cs ? 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.IO; 7   8 namespace FileDirectoryTutorial 9 { 10 class RenameFileInfoDemo { 11 public static void Main(string[] args) 12 { 13   14 FileInfo fileInfo = new FileInfo("C:/test/test.txt"); 15   16 if (!fileInfo.Exists) 17 { 18 Console.WriteLine(fileInfo.FullName + " does not exist."); 19 Console.Read(); // Kết thúc chương trình. 20 return; 21 } 22   23   24 Console.WriteLine(fileInfo.FullName + " exist"); 25   26   27 Console.WriteLine("Please enter a new name for this file:"); 28   // String người dùng nhập vào. 29 // Ví dụ: C:/test/test2.txt 30 string newFilename = Console.ReadLine(); 31   32 if (newFilename == String.Empty) 33 { 34 Console.WriteLine("You not enter new file name. Cancel rename"); 35   Console.Read(); 36 // Kết thúc chương trình. 37 return;
  12. 38 } 39   40 FileInfo newFileInfo = new FileInfo(newFilename); 41   // Nếu newFileInfo tồn tại (Không thể đổi tên). 42 if (newFileInfo.Exists) 43 { 44 Console.WriteLine("Can not rename file to " + newFileInfo.FullName + ". File al 45   46 Console.Read(); 47 // Kết thúc chương trình. 48 return; } 49   50 // Đảm bảo rằng thư mục chuyển tới tồn tại. 51 newFileInfo.Directory.Create(); 52   53   54 // Đổi tên file. 55 fileInfo.MoveTo(newFileInfo.FullName); 56   // Refresh trạng thái. 57 newFileInfo.Refresh(); 58   59 if (newFileInfo.Exists) 60 { 61 Console.WriteLine("The file was renamed to " + newFileInfo.FullName); 62 } 63   Console.ReadLine(); 64 } 65 } 66   } Chạy ví dụ: 5- DirectoryInfo DirectoryInfo là một class đại diện cho một thư mục, nó cung cấp phương thức cho việc tạo, di chuyển, liệt kê các thư mục và các thư mục con. Class này không cho phép có class con.
  13. Sự khác biệt giữa 2 class Directory và DirectoryInfo đó là Directory là một class tiện ích các phương thức của nó là tĩnh, còn DirectoryInfo đại diện cho một thư mục cụ thể. DirectoryInfoDemo.cs ? using System; 1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 using System.Threading.Tasks; 5 using System.IO; 6   7 namespace FileDirectoryTutorial 8 { 9 class DirectoryInfoDemo { 10 static void Main(string[] args) 11 { 12 // Một đối tượng đại diện cho một thư mục. 13 DirectoryInfo dirInfo = new DirectoryInfo("C:/Windows/System32/drivers"); 14   15 // Ghi ra các thông tin. 16 // Thông tin ngày tạo. 17 Console.WriteLine("Creation time: " + dirInfo.CreationTime); 18   // Thông tin ngày sửa cuối. 19 Console.WriteLine("Last Write Time " + dirInfo.LastWriteTime); 20   21 // Tên thư mục chứa. 22 Console.WriteLine("Directory Name: " + dirInfo.FullName); 23   24   25 // Mảng các thư mục con. 26 DirectoryInfo[] childDirs = dirInfo.GetDirectories(); 27 // Mảng các file con. FileInfo[] childFiles = dirInfo.GetFiles(); 28   29 foreach(DirectoryInfo childDir in childDirs ){ 30 Console.WriteLine(" - Directory: " + childDir.FullName); 31 } 32   33 foreach (FileInfo childFile in childFiles) 34 { 35 Console.WriteLine(" - File: " + childFile.FullName); 36 } 37   38   Console.Read(); 39 } 40 }   } Chạy ví dụ:
  14. 6- DriveInfo DirveInfo là một class, nó cung truy cập các thông tin ổ cứng. DriveInfoDemo.cs ? 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.IO; 7   8 namespace FileDirectoryTutorial 9 { 10 class DriveInfoDemo { 11 static void Main(string[] args) 12 { 13 DriveInfo[] drives = DriveInfo.GetDrives(); 14   15 foreach (DriveInfo drive in drives) 16 { 17 Console.WriteLine(" ============================== "); // Tên ổ đĩa 18 Console.WriteLine("Drive {0}", drive.Name); 19 // Loại ổ đĩa 20 Console.WriteLine(" Drive type: {0}", drive.DriveType); 21   22 // Nếu ổ đĩa sẵn sàng. if (drive.IsReady) 23 { 24 Console.WriteLine(" Volume label: {0}", drive.VolumeLabel); 25 Console.WriteLine(" File system: {0}", drive.DriveFormat); 26 Console.WriteLine( " Available space to current user:{0, 15} bytes", 27 drive.AvailableFreeSpace); 28   29 Console.WriteLine( 30 " Total available space: {0, 15} bytes", 31 drive.TotalFreeSpace); 32   Console.WriteLine( 33 " Total size of drive: {0, 15} bytes ",
  15. 34 drive.TotalSize); 35 } } 36 37   Console.Read(); 38 } 39 } 40   } Chạy ví dụ: Nén và giải nén trong C# 1- Giới thiệu 2- Sơ đồ thừa kế các class nén và giải nén 3- ZipFile 4- ZipArchive 5- TODO 6- Phụ lục: Fix lỗi The name 'xxx' does not exist in the current context 1- Giới thiệu
  16. 2- Sơ đồ thừa kế các class nén và giải nén Dưới đây là danh mục các class sử dụng cho mục đích nén và giải nén file. Chúng nằm trong namespaceSystem.IO.Compression. Class Mô tả ZipFile Cung cấp các phương thức tĩnh cho việc tạo, trính dữ liệu và mở file dữ liệu zip. ZipArchive Đại diện cho gói các file được nén trong định dạng ZIP. ZipArchiveEntry Đại diện cho một tập tin nằm trong file nén định dạng ZIP. Cung cấp các phương thức và thuộc tính cho các luồng (stream) nén và giải nén DeflateStream bằng cách sử dụng thuật toán Deflate. Cung cấp các phương thức và thuộc tính được sử dụng để nén và giải nén các GZipStream luồng (stream). Chú ý rằng các class này được đưa vào C# từ phiên bản 4.5, vì vậy project của bạn phải sử dụng .NET phiên bản 4.5 hoặc mới hơn. 3- ZipFile Class ZipFile là một class tiện ích, nó có nhiều phương thức tĩnh giúp bạn mở file zip, trích lấy dữ liệu, hoặc các tình huống hay được sử dụng như nén một thư mục thành một file zip, giải nén file zip ra một thư mục, .. Ví dụ đơn giản dưới đây sử dụng các phương thức tiện ích của class ZipFile nén một thư mục thành một file zip và sau đó giải nén file này sang một thư mục khác.
  17. ZipDirectoryDemo.cs ? 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.IO.Compression; 7 8 namespace CompressionTutorial 9 { 10 class ZipDirectoryDemo 11 { 12 public static void Main(string[] args) 13 { 14 15 // Thư mục sẽ nén 16 string inputDir = "C:/test/inputdir"; 17 18 // File đầu ra khi nén thư mục trên. 19 string zipPath = "C:/test/data.zip"; 20 21 // Giải nén file zip ra thư mục. 22 string extractPath = "C:/test/outputdir"; 23 24 // Tạo ra file zip bằng cách nén cả thư mục. 25 ZipFile.CreateFromDirectory(inputDir, zipPath); 26 27 // Giải nén file zip ra một thư mục. ZipFile.ExtractToDirectory(zipPath, extractPath); 28
  18. 29 Console.WriteLine("Done!"); 30 } 31 } 32 33 } 34 Nếu bạn nhận được một thông báo lỗi: "The name 'ZipFile' does not exist in the current context" (Mặc dù đã khai báo using System.IO.Compression) điều đó có nghĩa là project của bạn sử dụng .NET cũ hơn 4.5 hoặc chương trình không tìm thấy thư viện DLL. Bạn có thể xem cách fix lỗi này trong phụ lục ở cuối của tài liệu này. Chạy ví dụ và nhận được kết quả:
  19. data.zip 4- ZipArchive ZipArchive đại diện cho một bó các file đã nén trong một file định dạng ZIP. Bạn có thể lấy ra đối tượngZipArchive thông qua phương thức OpenRead của class ZipFile. Thông qua ZipArchive bạn có thể đọc các file con đã được nén trong file zip.
  20. Ví dụ dưới đây liệt kê ra các ZipArchiveEntry có trong file zip. ListArchiveEntryDemo.cs ? 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.IO.Compression; 7 using System.IO; 8 9 10 namespace CompressionTutorial { 11 class ListArchiveEntryDemo 12 { 13 14 public static void Main(string[] args) 15 { 16 string zipPath = "c:/test/data.zip"; 17 18 using (ZipArchive archive = ZipFile.OpenRead(zipPath)) 19 { 20 // Duyệt danh sách các ZipArchiveEntry. 21 foreach (ZipArchiveEntry entry in archive.Entries) 22 { 23 Console.WriteLine("Entry:"); 24 Console.WriteLine(" Name = " + entry.Name); 25 Console.WriteLine(" FullName = " + entry.FullName); 26 } 27 } 28 29 Console.Read(); 30 } 31 } 32 33 } Chạy ví dụ:
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2