【问题标题】:How to read an certain line from text file with UWP app?如何使用 UWP 应用从文本文件中读取某一行?
【发布时间】:2016-06-08 14:30:15
【问题描述】:

例如,如何仅从包含四行的文本文件中读取第二行?

内部存储是否与资源管理器中的计算机\Windows 手机\电话相同?

【问题讨论】:

  • 你能分享一些你的代码吗?挑战究竟是什么?您遇到了什么问题?

标签: uwp


【解决方案1】:

由于您的问题中没有太多细节,我假设您需要的文件已与应用程序一起部署。

public async Task<string> ReadLine(int lineIndex)
{
    var path = @"test.txt";
    var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
    var file = await folder.GetFileAsync(path);
    var lines = await Windows.Storage.FileIO.ReadLinesAsync(file);
    if (lines.Count >= lineIndex + 1)
    {
        return line[lineIndex];
    }
    else
    {
       return null;
    }
}

如果文件未随应用部署,请从此处将文件夹属性更改为另一个:Windows.Storage.ApplicationData.Current。 (本地文件夹、临时文件夹、漫游文件夹)

【讨论】:

    【解决方案2】:

    您好,从手机内存中读取和写入文件非常容易。看看下面的示例。我演示了如何将文本文件写入到 IsolatedStorage 中然后读取它。但是,如果您想从 SD 卡读取或写入,那里的东西就不那么明亮了。看看 MSDN 文章here

            IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();
    
            if (isoStore.FileExists("TestFile.txt"))
            {
                using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("TestFile.txt", FileMode.Open, isoStore))
                {
                    using (StreamReader reader = new StreamReader(isoStream))
                    {
                        var rows = reader.ReadToEnd().Split(new string[] { "\r\n" }, StringSplitOptions.None);
                        await new MessageDialog(rows[1]).ShowAsync(); //This is second row because the arrays are zero based
    
                    }
                }
            }
            else
            {
                using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("TestFile.txt", FileMode.CreateNew, isoStore))
                {
                    using (StreamWriter writer = new StreamWriter(isoStream))
                    {
                        writer.WriteLine("1. Hello from first row");
                        writer.WriteLine("2. Hello from second row");
                        writer.WriteLine("3. Hello from third row");
                        writer.WriteLine("4. Hello from fourth row");
                        writer.WriteLine("5. Hello from fifth row");
                    }
                }
            }
    

    【讨论】:

    • 投反对票,因为提供的代码示例存在问题。隔离存储是一个 WP8 -Silverlight 概念,不应再使用。 Intead 使用 ApplicationData.Current.LocalFolder。读取行的方式也是次优的。有专门的方法来读取各个行。不建议在“\r\n”上拆分
    • 请提供一些专门的读取单行的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多