6
votes

Filtream.writeline () n'écrire pas au fichier

J'essaie de créer un logiciel simple qui stocke des données dans un fichier journal TXT. Ceci est mon code xxx

ce que j'ai réalisé est: le fichier est créé, mais rien n'est écrit dedans. J'ai vérifié beaucoup de postes mais je n'ai pas pu trouver d'aide particulière.


4 commentaires

Tout d'abord, les blocs Essayer / enfin ne sont pas nécessaires, vous pouvez utiliser un bloc à la place.


Vous devrez peut-être rincer le streamwriter: fw.flush ()


Streamwriter dispose d'un constructeur qui prend une chaîne, le chemin du fichier et un bool, défini sur true pour ajouter. Cela vous aurait aidé à tomber dans la fosse du succès.


Vous devez affleurer et fermer le flux pour vous assurer que toutes les données sont écrites. Regardez ici: msdn.microsoft.com/en-us / Bibliothèque / ...


5 Réponses :


7
votes

Ajout d'un appel à Flush Le flux fonctionne. En effet, vous enveloppez le filtream . Streamwriter écrira sur le filtream , mais vous devez indiquer quand envoyer le flux au fichier actuel. De plus, vous pouvez échanger votre essayer enfin avec un à l'aide de : xxx


0 commentaires

5
votes

enfermez votre StreamWriter dans un bloc Utilisation pour vous assurer que tout est correctement fermé à la fin de l'utilisation du fichier, je ne pense pas que vous devez créer un filtream pour que cela fonctionne. xxx

Notez que le "code> streamwriter a un constructeur qui accepte deux paramètres, le nom du fichier à créer / ouvert et un drapeau pour indiquer que le fichier doit être ouvert. En mode append ou écrasé Voir Documents de Streamwriter


0 commentaires

1
votes

En effet, Flush () est la réponse; Cependant, j'utiliserais fichier.writealllines () code> à la place.

try
{
    var fileName = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)+"/textme.txt";
    var lines = AnimalShelter.AnimalList.Select(o=> "<chipNr>" + o.ChipRegistrationNumber + "</chipNr>");
    File.WriteAllLines(fileName, lines);
    foreach(var line in lines)
        Console.WriteLine(line);
}
catch(IOException)
{
    MessageBox.Show("ERROR THROWN");
}


0 commentaires

0
votes

Essayez d'utiliser ceci - il suffit de remplacer le tableau:

try
{
    using (Stream fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "/textme.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
    {
        using (StreamWriter sw = new StreamWriter(fs))
        {
            int[] test = new int[] { 0, 12, 23, 46 };
            sw.Write("sadadasdsadsadsadas");
            for (int i = 0; i < test.Length; i++)
            {
                sw.WriteLine("<chipNr>" + test[i] + "<chipNr>");
                Console.WriteLine("<chipNr>" + test[i] + "<chipNr>");
            }
            sw.Close();                    
        }
        fs.Close();
    } 

}
catch (IOException)
{
    MessageBox.Show("ERROR THROWN");
}


0 commentaires

2
votes

Utilisez toujours en utilisant (comme mentionné déjà) et que vous ne rencontrerez pas de problèmes (ou devez y penser) ... xxx

(aussi Vous auriez pu fermer l'écrivain au lieu de filtream qui aurait dû travailler)

Le problème est aussi loin que possible ...

filtream.close est en réalité flux.close - et que les appels disposent mais ce n'est pas virtuel, alors un nettoyage général.

filestream.dispose appelé implicitement lorsque vous utilisez à l'aide de - est spécifique affleurant Fermer < / Code> / Dispose - de même que le nettoyage spécifique approprié.

Vous pouvez éviter l'un de ce que via à l'aide de comme c'est généralement le motif recommandé (et je n'ai franchement jamais reçu de cela)


0 commentaires