Je dois obtenir mon code pour lire si le fichier n'existe pas créer d'autre ajouter. En ce moment, il lit s'il existe, crée et ajoute. Voici le code:
if (File.Exists(path))
{
using (StreamWriter sw = File.CreateText(path))
{
Est-ce que je ferais ça?
if (! File.Exists(path))
{
using (StreamWriter sw = File.CreateText(path))
{
Modifier:
string path = txtFilePath.Text;
if (!File.Exists(path))
{
using (StreamWriter sw = File.CreateText(path))
{
foreach (var line in employeeList.Items)
{
sw.WriteLine(((Employee)line).FirstName);
sw.WriteLine(((Employee)line).LastName);
sw.WriteLine(((Employee)line).JobTitle);
}
}
}
else
{
StreamWriter sw = File.AppendText(path);
foreach (var line in employeeList.Items)
{
sw.WriteLine(((Employee)line).FirstName);
sw.WriteLine(((Employee)line).LastName);
sw.WriteLine(((Employee)line).JobTitle);
}
sw.Close();
}
}
Vous pouvez simplement appeler
using (StreamWriter w = File.AppendText("log.txt"))
Il créera le fichier s'il n'existe pas et l'ouvrira pour l'ajouter.
Modifier:
C'est suffisant:
string path = txtFilePath.Text;
using(StreamWriter sw = File.AppendText(path))
{
foreach (var line in employeeList.Items)
{
Employee e = (Employee)line; // unbox once
sw.WriteLine(e.FirstName);
sw.WriteLine(e.LastName);
sw.WriteLine(e.JobTitle);
}
}
Mais si vous insistez pour vérifier d'abord, vous pouvez faire quelque chose comme ça, mais je ne vois pas le but.
string path = txtFilePath.Text;
using (StreamWriter sw = (File.Exists(path)) ? File.AppendText(path) : File.CreateText(path))
{
foreach (var line in employeeList.Items)
{
sw.WriteLine(((Employee)line).FirstName);
sw.WriteLine(((Employee)line).LastName);
sw.WriteLine(((Employee)line).JobTitle);
}
}
En outre, une chose à souligner avec votre code est que vous effectuez beaucoup de déballage inutile. Si vous devez utiliser une collection simple (non générique) telle que ArrayList
, désarchivez l'objet une fois et utilisez la référence.
Cependant, je préfère utiliser List<>
pour mes collections:
public class EmployeeList : List<Employee>
ou:
using(var fileStream = File.Open(path, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
using (StreamWriter sw = new StreamWriter(path, true))
{
//...
}
}
Vous n'avez même pas besoin de faire la vérification manuellement, File.Open le fait pour vous. Essayer:
using (StreamWriter sw = new StreamWriter(File.Open(path, System.IO.FileMode.Append)))
{
Réf.: http://msdn.Microsoft.com/en-us/library/system.io.filemode.aspx
Oui, vous devez annuler File.Exists(path)
si vous souhaitez vérifier si le fichier n'existe pas existe.
Par exemple
string rootPath = Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.System));
rootPath += "MTN";
if (!(File.Exists(rootPath)))
{
File.CreateText(rootPath);
}