Dans Visual Basic, le travail avec des fichiers est pris en charge à la fois par des procédures classiques (FileOpen, Input, Put, Close) et par l'API .NET (System.IO.StreamReader, StreamWriter, FileStream). Il est considéré comme préférable d'utiliser les classes .NET.
Subtilités :
Using pour libérer automatiquement les ressources.StreamReader/StreamWriter, pour les octets — FileStream.Exemple de code :
Dim filePath As String = "test.txt" ' Écriture dans le fichier Using writer As New StreamWriter(filePath) writer.WriteLine("Hello, world!") End Using ' Lecture depuis le fichier Using reader As New StreamReader(filePath) Dim content As String = reader.ReadToEnd() End Using
Que se passe-t-il si vous ne fermez pas le flux après avoir écrit dans le fichier via StreamWriter, et pourquoi est-il important d'utiliser la construction Using ?
Réponse :
Si vous ne fermez pas le flux (ne pas appeler Close ou ne pas utiliser Using), les données mises en tampon peuvent ne pas être écrites sur le disque, car le système d'exploitation les conserve en mémoire. De plus, un flux non fermé conserve un descripteur de fichier, et le fichier peut être bloqué pour d'autres processus, provoquant des fuites de mémoire et de ressources dans les applications à long terme. La construction Using garantit l'appel de Dispose même en cas d'exception.
Histoire
Absence soudaine de données : Lors de la génération de rapports dans une banque, le développeur n'a pas fermé
StreamWriter. En conséquence, certaines données n'ont pas été écrites dans le fichier en raison d'un tampon non libéré, le service à la clientèle n'a pas pu ouvrir les rapports finaux.
Histoire
Fuite de descripteurs de fichiers : Dans un système ERP, les développeurs utilisaient l'ouverture manuelle de fichiers et oubliaient souvent d'appeler
Close. Après quelques jours, l'application se plantait avec l'épuisement de la limite des fichiers ouverts.
Histoire
Conflit de blocage de fichiers : Dans un service réseau de sauvegarde, le fichier était ouvert sans le bon mode d'accès, bloquant l'accès à d'autres programmes et provoquant de longs temps d'arrêt dans tout le département.