τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Οι λειτουργίες εισόδου/εξόδου του συστήματος αρχείων αποτελούν σημαντικό μέρος οποιασδήποτε γλώσσας προγραμματισμού και η C# δεν αποτελεί εξαίρεση. Είτε πρόκειται για ανάγνωση και εγγραφή αρχείων, λειτουργία καταλόγων ή επεξεργασία ροών αρχείων, το C# παρέχει μια πλούσια και ισχυρή βιβλιοθήκη κλάσεων για την υλοποίηση αυτών των λειτουργιών. Αυτό το άρθρο θα παρουσιάσει λεπτομερώς τις λειτουργίες εισόδου/εξόδου του συστήματος αρχείων σε C# και θα δείξει πώς να χειρίζεστε αποτελεσματικά αρχεία και καταλόγους μέσω παραδειγμάτων κώδικα.
Σε C#, μπορείτε να χρησιμοποιήσετεSystem.IO
κάτω από τον χώρο ονομάτωνFile
Κλάση για την εκτέλεση εργασιών εγγραφής αρχείων.
Παράδειγμα:
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string path = "example.txt";
- string content = "这是一个示例文本。";
-
- // 写入文件
- File.WriteAllText(path, content);
- Console.WriteLine("文件写入成功。");
- }
- }
Ομοίως, μπορούμε επίσης να χρησιμοποιήσουμεFile
Τάξη για ανάγνωση περιεχομένων αρχείου:
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string path = "example.txt";
-
- if (File.Exists(path))
- {
- // 读取文件内容
- string content = File.ReadAllText(path);
- Console.WriteLine("文件内容:");
- Console.WriteLine(content);
- }
- else
- {
- Console.WriteLine("文件不存在。");
- }
- }
- }
Οι ροές αρχείων παρέχουν έναν πιο ευέλικτο τρόπο ανάγνωσης και εγγραφής αρχείων Ειδικά κατά την επεξεργασία μεγάλων αρχείων, οι ροές αρχείων μπορούν να διαβάζουν και να γράφουν δεδομένα byte προς byte, αποφεύγοντας έτσι την υπερβολική χρήση μνήμης.
FileStream
εγγραφή αρχείου- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string path = "filestream_example.txt";
- byte[] data = System.Text.Encoding.UTF8.GetBytes("通过FileStream写入的数据。");
-
- using (FileStream fs = new FileStream(path, FileMode.Create))
- {
- fs.Write(data, 0, data.Length);
- Console.WriteLine("数据已通过FileStream写入。");
- }
- }
- }
FileStream
ανάγνωση αρχείου- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string path = "filestream_example.txt";
-
- using (FileStream fs = new FileStream(path, FileMode.Open))
- {
- byte[] data = new byte[fs.Length];
- fs.Read(data, 0, data.Length);
- string content = System.Text.Encoding.UTF8.GetString(data);
- Console.WriteLine("通过FileStream读取的内容:");
- Console.WriteLine(content);
- }
- }
- }
Σε C#, μπορείτε να χρησιμοποιήσετεDirectory
τάξη για να δημιουργήσετε έναν κατάλογο:
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string dirPath = "example_directory";
-
- if (!Directory.Exists(dirPath))
- {
- Directory.CreateDirectory(dirPath);
- Console.WriteLine("目录创建成功。");
- }
- else
- {
- Console.WriteLine("目录已存在。");
- }
- }
- }
μπορεί να χρησιμοποιηθείDirectory
Κλάση για διαγραφή καταλόγου:
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string dirPath = "example_directory";
-
- if (Directory.Exists(dirPath))
- {
- Directory.Delete(dirPath, true);
- Console.WriteLine("目录已删除。");
- }
- else
- {
- Console.WriteLine("目录不存在。");
- }
- }
- }
μπορεί να χρησιμοποιηθείDirectory
Η τάξη λαμβάνει τη λίστα των αρχείων στον καθορισμένο κατάλογο:
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string dirPath = "example_directory";
-
- if (Directory.Exists(dirPath))
- {
- string[] files = Directory.GetFiles(dirPath);
- Console.WriteLine("目录中的文件:");
- foreach (string file in files)
- {
- Console.WriteLine(file);
- }
- }
- else
- {
- Console.WriteLine("目录不存在。");
- }
- }
- }
Όλα τα αρχεία σε έναν κατάλογο και οι υποκαταλόγους του μπορούν να διασχιστούν χρησιμοποιώντας έναν αναδρομικό αλγόριθμο:
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string dirPath = "example_directory";
-
- if (Directory.Exists(dirPath))
- {
- TraverseDirectory(dirPath);
- }
- else
- {
- Console.WriteLine("目录不存在。");
- }
- }
-
- static void TraverseDirectory(string dirPath)
- {
- string[] files = Directory.GetFiles(dirPath);
- string[] directories = Directory.GetDirectories(dirPath);
-
- foreach (string file in files)
- {
- Console.WriteLine("文件: " + file);
- }
-
- foreach (string directory in directories)
- {
- Console.WriteLine("目录: " + directory);
- TraverseDirectory(directory); // 递归遍历子目录
- }
- }
- }
Στις λειτουργίες του συστήματος αρχείων, η ανάγνωση και ο καθορισμός χαρακτηριστικών αρχείων είναι μια κοινή απαίτηση. Το C# παρέχειFileInfo
κλάση για την υλοποίηση αυτής της λειτουργικότητας.
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string filePath = "example.txt";
-
- FileInfo fileInfo = new FileInfo(filePath);
-
- if (fileInfo.Exists)
- {
- Console.WriteLine("文件名: " + fileInfo.Name);
- Console.WriteLine("文件路径: " + fileInfo.FullName);
- Console.WriteLine("文件大小: " + fileInfo.Length);
- Console.WriteLine("创建时间: " + fileInfo.CreationTime);
- Console.WriteLine("最后访问时间: " + fileInfo.LastAccessTime);
- Console.WriteLine("最后修改时间: " + fileInfo.LastWriteTime);
- }
- else
- {
- Console.WriteLine("文件不存在。");
- }
- }
- }
- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string filePath = "example.txt";
-
- FileInfo fileInfo = new FileInfo(filePath);
-
- if (fileInfo.Exists)
- {
- // 设置文件属性
- fileInfo.Attributes = FileAttributes.ReadOnly;
- Console.WriteLine("文件属性已设置为只读。");
-
- // 恢复文件属性
- fileInfo.Attributes = FileAttributes.Normal;
- Console.WriteLine("文件属性已恢复为正常。");
- }
- else
- {
- Console.WriteLine("文件不存在。");
- }
- }
- }
Η χρήση ασύγχρονων μεθόδων μπορεί να βελτιώσει την απόκριση της εφαρμογής σας όταν εργάζεστε με μεγάλα αρχεία ή εκτελείτε χρονοβόρες λειτουργίες αρχείων. Το C# παρέχει ασύγχρονες μεθόδους ανάγνωσης και εγγραφής αρχείων.
- using System;
- using System.IO;
- using System.Threading.Tasks;
-
- class Program
- {
- static async Task Main()
- {
- string path = "async_example.txt";
- string content = "这是一个异步写入示例。";
-
- await File.WriteAllTextAsync(path, content);
- Console.WriteLine("文件异步写入成功。");
- }
- }
- using System;
- using System.IO;
- using System.Threading.Tasks;
-
- class Program
- {
- static async Task Main()
- {
- string path = "async_example.txt";
-
- if (File.Exists(path))
- {
- string content = await File.ReadAllTextAsync(path);
- Console.WriteLine("文件内容:");
- Console.WriteLine(content);
- }
- else
- {
- Console.WriteLine("文件不存在。");
- }
- }
- }
Το C# παρέχειFileSystemWatcher
Κλάση για παρακολούθηση αλλαγών σε αρχεία ή καταλόγους σε έναν καθορισμένο κατάλογο. Αυτό είναι χρήσιμο σε εφαρμογές που πρέπει να ανταποκρίνονται στις αλλαγές του συστήματος αρχείων.
FileSystemWatcher
Παρακολούθηση αλλαγών αρχείων- using System;
- using System.IO;
-
- class Program
- {
- static void Main()
- {
- string path = "example_directory";
-
- if (!Directory.Exists(path))
- {
- Directory.CreateDirectory(path);
- }
-
- FileSystemWatcher watcher = new FileSystemWatcher();
- watcher.Path = path;
- watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite | NotifyFilters.Size;
- watcher.Filter = "*.*";
-
- watcher.Changed += OnChanged;
- watcher.Created += OnChanged;
- watcher.Deleted += OnChanged;
- watcher.Renamed += OnRenamed;
-
- watcher.EnableRaisingEvents = true;
-
- Console.WriteLine("正在监视目录: " + path);
- Console.WriteLine("按任意键退出...");
- Console.ReadKey();
- }
-
- private static void OnChanged(object source, FileSystemEventArgs e)
- {
- Console.WriteLine($"文件: {e.FullPath} {e.ChangeType}");
- }
-
- private static void OnRenamed(object source, RenamedEventArgs e)
- {
- Console.WriteLine($"文件: {e.OldFullPath} 重命名为 {e.FullPath}");
- }
- }
Ελπίζω αυτό το περιεχόμενο να σας φανεί χρήσιμο, ευχαριστώ που διαβάσατε!