none
Les fichiers dans local storage RRS feed

  • Question

  • Je n'ai pas trouvé la methode Append sur un fichier texte. Je pense qu'il n'existe pas . Merci de confirmer.

    J'ai donc essayer de recreer completement mon fichier apres chaque modification. Mais la j'ai l'impression qu'il garde le flux complet et ne remplace que la longueur du flux reecrit donc si le flux d'origine est plus grand , les dernieres lignes restent.

    Comment faire pour initialiser le streamwriter et le vider completement . J(ai essaye avec Flush mais sans succes.

    voici mon code :

      StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
    
                string NomDossier = "Caisse";
                string NomFichier = "CaisClavier";
                StorageFolder dataFolder = await localFolder.CreateFolderAsync(NomDossier, CreationCollisionOption.OpenIfExists);
    
                StorageFile openedFile = await dataFolder.GetFileAsync(NomFichier);
                using (StreamWriter writer = new StreamWriter(await openedFile.OpenStreamForWriteAsync()))
                {
                    await writer.FlushAsync();
                    
                    foreach (ClassClavier UnClav in LesClaviers)
                    {
                        string Buf = "";
                        Buf += UnClav.Clav_TypClav.ToString() + ";";
                        Buf += UnClav.Clav_CodClav.ToString() + ";";
                        Buf += UnClav.Clav_LibClav + ";";
    
                        await writer.WriteLineAsync(Buf);
                    }

    merci pour votre aide  Caisseodev

     

    • Type modifié Aurel Bera mardi 23 octobre 2012 09:40 Pas de reponse
    • Type modifié Aurel Bera jeudi 25 octobre 2012 07:00 Repondu
    vendredi 19 octobre 2012 16:20

Réponses

  • Effectivement il n'y a pas d'append en temps que tel.

    mais ça s'écrit en quelques lignes

    var file = await KnownFolders.DocumentsLibrary.CreateFileAsync("appendedfile.txt", CreationCollisionOption.OpenIfExists);
                using (var fileStream = await file.OpenAsync(FileAccessMode.ReadWrite))
                {
                    using (var outputStream = fileStream.GetOutputStreamAt(fileStream.Size))
                    {
                        using (var streamWriter = new StreamWriter(outputStream.AsStreamForWrite()))
                        {
                            await streamWriter.WriteLineAsync(DateTime.Now.ToString());
                            await streamWriter.FlushAsync();
                        }
                    }
                }

    NB : il est important de "Dispose" les différentes classes que vous utilisez (notamment le fileStream et l'outputStream).

    Cyprien Autexier

    • Marqué comme réponse Aurel Bera jeudi 25 octobre 2012 13:01
    mardi 23 octobre 2012 10:40

Toutes les réponses