प्रौद्योगिकी साझेदारी

C# मध्ये सञ्चिकातन्त्रस्य I/O कार्याणां गहनबोधः ।

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

सञ्चिकातन्त्रस्य I/O क्रियाः कस्यापि प्रोग्रामिंगभाषायाः महत्त्वपूर्णः भागः भवति, C# अपवादः अपि नास्ति । सञ्चिकानां पठनं लेखनं च, निर्देशिकानां संचालनं वा, सञ्चिकाधाराणां संसाधनं वा, C# एतानि कार्याणि कार्यान्वितुं समृद्धं शक्तिशालीं च वर्गपुस्तकालयं प्रदाति । अयं लेखः C# इत्यस्मिन् सञ्चिकातन्त्रस्य I/O-सञ्चालनस्य विस्तरेण परिचयं करिष्यति, तथा च कोड-उदाहरणानां माध्यमेन सञ्चिकाः निर्देशिकाः च कथं कुशलतया नियन्त्रयितुं शक्यन्ते इति दर्शयिष्यति ।

1. सञ्चिकाः पठन्तु लिखन्तु च
सञ्चिकां लिखन्तु

C# इत्यस्मिन् भवन्तः उपयोक्तुं शक्नुवन्तिSystem.IOनामस्थानस्य अधःFileसञ्चिकालेखनक्रियाः कर्तुं वर्गः ।

उदाहरण:

  1. using System;
  2. using System.IO;
  3. class Program
  4. {
  5. static void Main()
  6. {
  7. string path = "example.txt";
  8. string content = "这是一个示例文本。";
  9. // 写入文件
  10. File.WriteAllText(path, content);
  11. Console.WriteLine("文件写入成功。");
  12. }
  13. }
सञ्चिकां पठन्तु

तथैव वयं अपि उपयोक्तुं शक्नुमःFileसञ्चिकासामग्री पठितुं वर्गः : १.

  1. using System;
  2. using System.IO;
  3. class Program
  4. {
  5. static void Main()
  6. {
  7. string path = "example.txt";
  8. if (File.Exists(path))
  9. {
  10. // 读取文件内容
  11. string content = File.ReadAllText(path);
  12. Console.WriteLine("文件内容:");
  13. Console.WriteLine(content);
  14. }
  15. else
  16. {
  17. Console.WriteLine("文件不存在。");
  18. }
  19. }
  20. }
2. सञ्चिकाप्रवाहानाम् उपयोगं कुर्वन्तु

सञ्चिकाप्रवाहाः सञ्चिकानां पठनस्य लेखनस्य च अधिकं लचीलं मार्गं प्रददति विशेषतः बृहत्सञ्चिकानां संसाधने सञ्चिकाप्रवाहाः बाइट्-बाइट्-द्वारा दत्तांशं पठितुं लिखितुं च शक्नुवन्ति, येन अत्यधिकं स्मृति-उपयोगः परिहृतः भवति

उपयुञ्जताम्‌FileStreamसञ्चिकां लिखन्तु
  1. using System;
  2. using System.IO;
  3. class Program
  4. {
  5. static void Main()
  6. {
  7. string path = "filestream_example.txt";
  8. byte[] data = System.Text.Encoding.UTF8.GetBytes("通过FileStream写入的数据。");
  9. using (FileStream fs = new FileStream(path, FileMode.Create))
  10. {
  11. fs.Write(data, 0, data.Length);
  12. Console.WriteLine("数据已通过FileStream写入。");
  13. }
  14. }
  15. }
उपयुञ्जताम्‌FileStreamसञ्चिकां पठन्तु
  1. using System;
  2. using System.IO;
  3. class Program
  4. {
  5. static void Main()
  6. {
  7. string path = "filestream_example.txt";
  8. using (FileStream fs = new FileStream(path, FileMode.Open))
  9. {
  10. byte[] data = new byte[fs.Length];
  11. fs.Read(data, 0, data.Length);
  12. string content = System.Text.Encoding.UTF8.GetString(data);
  13. Console.WriteLine("通过FileStream读取的内容:");
  14. Console.WriteLine(content);
  15. }
  16. }
  17. }
3. संचालननिर्देशिका
निर्देशिकां रचयन्तु

C# इत्यस्मिन् भवन्तः उपयोक्तुं शक्नुवन्तिDirectoryclass इत्यस्य निर्देशिकां निर्मातुं:

  1. using System;
  2. using System.IO;
  3. class Program
  4. {
  5. static void Main()
  6. {
  7. string dirPath = "example_directory";
  8. if (!Directory.Exists(dirPath))
  9. {
  10. Directory.CreateDirectory(dirPath);
  11. Console.WriteLine("目录创建成功。");
  12. }
  13. else
  14. {
  15. Console.WriteLine("目录已存在。");
  16. }
  17. }
  18. }
निर्देशिकां विलोपयन्तु

उपयोक्तुं शक्नोतिDirectoryनिर्देशिकां विलोपयितुं वर्गः : १.

  1. using System;
  2. using System.IO;
  3. class Program
  4. {
  5. static void Main()
  6. {
  7. string dirPath = "example_directory";
  8. if (Directory.Exists(dirPath))
  9. {
  10. Directory.Delete(dirPath, true);
  11. Console.WriteLine("目录已删除。");
  12. }
  13. else
  14. {
  15. Console.WriteLine("目录不存在。");
  16. }
  17. }
  18. }
4. सञ्चिकाः निर्देशिकाः च पारयन्तु
निर्देशिकायां सञ्चिकानां सूचीं प्राप्नुवन्तु

उपयोक्तुं शक्नोतिDirectoryवर्गः निर्दिष्टनिर्देशिकायां सञ्चिकानां सूचीं प्राप्नोति:

  1. using System;
  2. using System.IO;
  3. class Program
  4. {
  5. static void Main()
  6. {
  7. string dirPath = "example_directory";
  8. if (Directory.Exists(dirPath))
  9. {
  10. string[] files = Directory.GetFiles(dirPath);
  11. Console.WriteLine("目录中的文件:");
  12. foreach (string file in files)
  13. {
  14. Console.WriteLine(file);
  15. }
  16. }
  17. else
  18. {
  19. Console.WriteLine("目录不存在。");
  20. }
  21. }
  22. }
निर्देशिकाः पुनरावर्तनीयरूपेण भ्रमन्तु

निर्देशिकायां तस्याः उपनिर्देशिकासु च सर्वाणि सञ्चिकाः पुनरावर्तनीय-अल्गोरिदमस्य उपयोगेन भ्रमितुं शक्यन्ते:

  1. using System;
  2. using System.IO;
  3. class Program
  4. {
  5. static void Main()
  6. {
  7. string dirPath = "example_directory";
  8. if (Directory.Exists(dirPath))
  9. {
  10. TraverseDirectory(dirPath);
  11. }
  12. else
  13. {
  14. Console.WriteLine("目录不存在。");
  15. }
  16. }
  17. static void TraverseDirectory(string dirPath)
  18. {
  19. string[] files = Directory.GetFiles(dirPath);
  20. string[] directories = Directory.GetDirectories(dirPath);
  21. foreach (string file in files)
  22. {
  23. Console.WriteLine("文件: " + file);
  24. }
  25. foreach (string directory in directories)
  26. {
  27. Console.WriteLine("目录: " + directory);
  28. TraverseDirectory(directory); // 递归遍历子目录
  29. }
  30. }
  31. }
5. सञ्चिकाविशेषणक्रियाः

सञ्चिकातन्त्रसञ्चालनेषु सञ्चिकाविशेषणानां पठनं, सेट् च सामान्या आवश्यकता अस्ति । C # प्रदातिFileInfoclass इत्येतत् कार्यक्षमतां कार्यान्वितुं ।

सञ्चिकाविशेषताः पठन्तु
  1. using System;
  2. using System.IO;
  3. class Program
  4. {
  5. static void Main()
  6. {
  7. string filePath = "example.txt";
  8. FileInfo fileInfo = new FileInfo(filePath);
  9. if (fileInfo.Exists)
  10. {
  11. Console.WriteLine("文件名: " + fileInfo.Name);
  12. Console.WriteLine("文件路径: " + fileInfo.FullName);
  13. Console.WriteLine("文件大小: " + fileInfo.Length);
  14. Console.WriteLine("创建时间: " + fileInfo.CreationTime);
  15. Console.WriteLine("最后访问时间: " + fileInfo.LastAccessTime);
  16. Console.WriteLine("最后修改时间: " + fileInfo.LastWriteTime);
  17. }
  18. else
  19. {
  20. Console.WriteLine("文件不存在。");
  21. }
  22. }
  23. }
सञ्चिकागुणाः सेट् कुर्वन्तु
  1. using System;
  2. using System.IO;
  3. class Program
  4. {
  5. static void Main()
  6. {
  7. string filePath = "example.txt";
  8. FileInfo fileInfo = new FileInfo(filePath);
  9. if (fileInfo.Exists)
  10. {
  11. // 设置文件属性
  12. fileInfo.Attributes = FileAttributes.ReadOnly;
  13. Console.WriteLine("文件属性已设置为只读。");
  14. // 恢复文件属性
  15. fileInfo.Attributes = FileAttributes.Normal;
  16. Console.WriteLine("文件属性已恢复为正常。");
  17. }
  18. else
  19. {
  20. Console.WriteLine("文件不存在。");
  21. }
  22. }
  23. }
6. अतुल्यकालिकसञ्चिका I/O कार्याणि

अतुल्यकालिकपद्धतीनां उपयोगेन बृहत्सञ्चिकाभिः सह कार्यं कुर्वन् अथवा समयग्राहकसञ्चिकाक्रियाः कुर्वन् भवतः अनुप्रयोगस्य प्रतिक्रियाशीलतां सुधारयितुम् शक्यते । C# सञ्चिकाः पठितुं लेखितुं च अतुल्यकालिकविधयः प्रदाति ।

सञ्चिकाः अतुल्यकालिकरूपेण लिखन्तु
  1. using System;
  2. using System.IO;
  3. using System.Threading.Tasks;
  4. class Program
  5. {
  6. static async Task Main()
  7. {
  8. string path = "async_example.txt";
  9. string content = "这是一个异步写入示例。";
  10. await File.WriteAllTextAsync(path, content);
  11. Console.WriteLine("文件异步写入成功。");
  12. }
  13. }
सञ्चिकाः अतुल्यकालिकरूपेण पठन्तु
  1. using System;
  2. using System.IO;
  3. using System.Threading.Tasks;
  4. class Program
  5. {
  6. static async Task Main()
  7. {
  8. string path = "async_example.txt";
  9. if (File.Exists(path))
  10. {
  11. string content = await File.ReadAllTextAsync(path);
  12. Console.WriteLine("文件内容:");
  13. Console.WriteLine(content);
  14. }
  15. else
  16. {
  17. Console.WriteLine("文件不存在。");
  18. }
  19. }
  20. }
7. सञ्चिकानिरीक्षणम्

C # प्रदातिFileSystemWatcher निर्दिष्टनिर्देशिकायां सञ्चिकासु अथवा निर्देशिकासु परिवर्तनस्य निरीक्षणार्थं वर्गः । एतत् तेषु अनुप्रयोगेषु उपयोगी भवति येषु सञ्चिकातन्त्रपरिवर्तनस्य प्रतिक्रिया आवश्यकी भवति ।

उपयुञ्जताम्‌FileSystemWatcherसञ्चिकापरिवर्तनस्य निरीक्षणं कुर्वन्तु
  1. using System;
  2. using System.IO;
  3. class Program
  4. {
  5. static void Main()
  6. {
  7. string path = "example_directory";
  8. if (!Directory.Exists(path))
  9. {
  10. Directory.CreateDirectory(path);
  11. }
  12. FileSystemWatcher watcher = new FileSystemWatcher();
  13. watcher.Path = path;
  14. watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite | NotifyFilters.Size;
  15. watcher.Filter = "*.*";
  16. watcher.Changed += OnChanged;
  17. watcher.Created += OnChanged;
  18. watcher.Deleted += OnChanged;
  19. watcher.Renamed += OnRenamed;
  20. watcher.EnableRaisingEvents = true;
  21. Console.WriteLine("正在监视目录: " + path);
  22. Console.WriteLine("按任意键退出...");
  23. Console.ReadKey();
  24. }
  25. private static void OnChanged(object source, FileSystemEventArgs e)
  26. {
  27. Console.WriteLine($"文件: {e.FullPath} {e.ChangeType}");
  28. }
  29. private static void OnRenamed(object source, RenamedEventArgs e)
  30. {
  31. Console.WriteLine($"文件: {e.OldFullPath} 重命名为 {e.FullPath}");
  32. }
  33. }

आशासे यत् एषा सामग्री भवद्भ्यः सहायका भविष्यति, पठनार्थं धन्यवादः!