簡體   English   中英

附加到文本文件(不覆蓋!)

[英]Append to a Text File (Not Overwrite!)

另一個Universal Platform App問我,還在學習!

快速問題 - 我需要使用哪種方法將數據寫入文本文件,以便將字符串附加(而不是覆蓋)到文本文件中? 目前我正在使用一個使用流的異步void,但它覆蓋了我的文件。 以下是創建和寫入文本文件的不同方法: https//msdn.microsoft.com/en-us/library/windows/apps/mt185401.aspx

現在這是我的代碼。 是否需要修改以將數據附加到文本文件而不是覆蓋它,或者我是否需要使用其他方法之一來附加數據?

//WRITE
        //Create the text file to hold the data
        Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
        Windows.Storage.StorageFile ticketsFile = await storageFolder.CreateFileAsync("tickets.txt", Windows.Storage.CreationCollisionOption.OpenIfExists);

        //Use stream to write to the file
        var stream = await ticketsFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);

        using (var outputStream = stream.GetOutputStreamAt(0))
        {
            using (var dataWriter = new Windows.Storage.Streams.DataWriter(outputStream))
            {
                dataWriter.WriteString("Submitted: " + submitDate + "\n" + "Problem: " + problem + "\n" + "Room: " + location + "\n" + "Description: " + descriptionText.Text + "\n" + "Priority: " + priority + "\n");
                await dataWriter.StoreAsync();
                await outputStream.FlushAsync();
            }
        }
        stream.Dispose(); // Or use the stream variable (see previous code snippet) with a using statement as well.

如果它有任何區別,我的閱讀代碼:

//READ
        //Open the text file
        stream = await ticketsFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);
        ulong size = stream.Size;

        using (var inputStream = stream.GetInputStreamAt(0))
        {
            using (var dataReader = new Windows.Storage.Streams.DataReader(inputStream))
            {
                uint numBytesLoaded = await dataReader.LoadAsync((uint)size);
                string savedTickets = dataReader.ReadString(numBytesLoaded);

                textBox.Text = savedTickets;
            }
        }

謝謝。

我沒有在我面前的平台我現在可以測試,但是這應該可以獲得現有文件的長度並將編寫器放在最后(新文件應該返回0):

using (var outputStream = stream.GetOutputStreamAt(stream.Size))

除了獲取流之外,您還可以使用FileIO類。 例如方法AppendTextAsync

await FileIO.AppendTextAsync(ticketsFile, "Submitted: " + submitDate + "\n" + "Problem: " + problem + "\n" + "Room: " + location + "\n" + "Description: " + descriptionText.Text + "\n" + "Priority: " + priority + "\n");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM