UWP RichEditBox只读.rtf文件吗?

时间:2017-05-19 11:24:21

标签: c# uwp richeditbox

我尝试使用此方法将文件内容添加到我的RichEditBox:

myRichEditBox.Document.LoadFromStream(Windows.UI.Text.TextSetOptions.None, streamFile);

这就是我填充streamFile变量的方式:

public static async void openFileAsync(string pathFolder, string file)
    {
        Windows.Storage.StorageFolder folder = await Windows.Storage.StorageFolder.GetFolderFromPathAsync(pathFolder);
        System.Diagnostics.Debug.WriteLine("folder : " + folder.Path);

        Windows.Storage.StorageFile fileOpen = await folder.GetFileAsync(file);
        System.Diagnostics.Debug.WriteLine("file : " + fileOpen.Path);

        Windows.Storage.Streams.IRandomAccessStream stream = await fileOpen.OpenAsync(Windows.Storage.FileAccessMode.Read);

        streamFile = stream;
    }

我没有异常,但richBoxEdit文本不可读(字符不可读)。 我想读取txt文件。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果要使用Stream来读取文件的内容,可以使用以下方法。这将返回文件的内容Text

internal async Task<string> UsingStream(StorageFile sampleFile)
{
    IRandomAccessStream stream = await sampleFile.OpenAsync(FileAccessMode.Read);
    ulong size = stream.Size;
    string text = string.Empty;
    using (var inputStream = stream.GetInputStreamAt(0))
    {
        using (var dataReader = new DataReader(inputStream))
        {
            uint numBytesLoaded = await dataReader.LoadAsync((uint)size);
            text = dataReader.ReadString(numBytesLoaded);
        }
    }
    return text;
}

请参阅Official Microsoft Documentation参考

但是,如果您想直接加载文本而不是流,请使用下方。

string fileText = await FileIO.ReadTextAsync(sampleFile);

然后将数据分配到RichEditBox,如下所示。

MyRichEditBox.Document.SetText(Windows.UI.Text.TextSetOptions.None, await UsingStream(sampleFile));