如何读取 Blazor WASM 项目中的本地文本文件?

How to read a local text file in Blazor WASM project?

我有一个 Blazor WASM(非托管)项目,其中包含 TodoTodoList 模型。我将一个文本文件放在 wwwroot 文件夹中,并尝试通过 File.ReadAllLines()[ 在 TodoList 构造函数中读取它 方法传递路径 "todos.txt".

项目结构:

public class TodoList
{
    public TodoList()
    {
        Todos = new List<Todo>();
        try
        {
            var lines = File.ReadAllLines("todos.txt");
            foreach (string line in lines)
            {
                Todos.Add(new Todo { Title = line });
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"{ex.Message}");
        }
    }

    public List<Todo> Todos { get; set; }
}
public class Todo
{
    public string Title { get; set; }
    public bool Checked { get; set; } = false;
}

我在 razor 组件中创建 TodoList 对象:

@page "/todopage"
...
@code {
    private TodoList todoList = new TodoList();
    ...
}

运行 应用抛出异常:找不到文件“/todos.txt”。虽然我可以通过请求直接打开文件 https://localhost:44361/todos.txt 当应用程序是 运行.

为什么应用程序找不到文本文件?如何打开并阅读?

它找不到该文件,因为在您获取它之前它只是服务器上的一个资源。

因此,您可以使用 HttpClient 来获取它(您已经知道 URL)或者您可以将其作为嵌入式资源并从资源流中读取它。

我会使用 HttpClient 来获取它。

您可以使用Http.GetStringAsync()。 你可以点击这个.