Dépannage de File.Create() : résolution des erreurs d'accès aux fichiers
La création de fichiers d'exécution rencontre souvent des problèmes d'accès. Une erreur courante est "Le processus ne peut pas accéder au fichier car il est utilisé par un autre processus", même après avoir utilisé File.Create()
.
Le problème
Le scénario consiste à vérifier l'existence d'un fichier et à le créer si nécessaire. Les tentatives ultérieures d'écriture dans le fichier entraînent l'erreur « fichier en cours d'utilisation ». Cela se produit généralement avec un code comme celui-ci :
<code class="language-csharp">string filePath = string.Format(@"{0}\M{1}.dat", ConfigurationManager.AppSettings["DirectoryPath"], costCentre); if (!File.Exists(filePath)) { File.Create(filePath); } using (StreamWriter sw = File.AppendText(filePath)) { //write my text }</code>
La solution
File.Create()
ouvre uniquement un pointeur de fichier ; il ne le ferme pas automatiquement. La solution nécessite de fermer explicitement le fichier immédiatement après sa création à l'aide de Close()
. De plus, utiliser File.WriteAllText()
est une approche plus simple que File.AppendText()
pour ce cas spécifique.
Le code corrigé :
<code class="language-csharp">File.Create(filePath).Close(); File.WriteAllText(filePath, FileText); // Assuming FileText variable holds the text to write</code>
Considération importante
Bien que cette solution résolve le problème d'accès aux fichiers, File.WriteAllText()
n'est pas optimale pour les gros fichiers texte en raison de sa nature en un seul passage. Pour les fichiers volumineux, envisagez des méthodes plus efficaces, telles que la diffusion en continu des données à l'aide de StreamWriter
pour de meilleures performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!