访问WPF项目中的文本文件

本文关键字:文本 文件 WPF 项目 访问 | 更新日期: 2023-09-27 18:06:30

我觉得我错过了一些明显的东西…

我在我的WPF应用程序中有一个文本文件,它位于子文件夹中,所以提前为可怕的ASCII道歉。

+Project
+--+Subfolder
|  +--TextFile.txt
|
+--App.config
+--App.xaml
+--etc.

这个文本文件的构建动作是资源,我正在尝试访问内容作为我的程序中的字符串,但我完全不知道我在做什么。

试图通过Properties.Settings.Default访问文件不工作,显然在我的程序中只有一个ConnectionString资源。

在XAML中不行因为不知道为什么没有Source属性

<!-- somewhere up the top of App.xaml... -->
xmlns:clr="clr-namespace:System;assembly=mscorlib"
<clr:String Source="pack://application:,,,/Subfolder/Textfile.txt"/>

FindResource方法也找不到。

FindResource("Usage.txt"); //ResourceReferenceKeyNotFoundException

我所要做的就是引用文本文件,将其作为字符串读取并使用该字符串。否则,我必须在方法调用中嵌入一个50行字串。因为这完全是个好主意。/s

在WinForms,这是简单的:Properties.Settings.Default.TextFile.ToString();,但似乎没有工作在这里。

我还应该指出,这个文件不应该包含在输出目录中,它需要嵌入到应用程序或其他术语中。

我应该怎么做?

访问WPF项目中的文本文件

应该可以:

var uri = new Uri("pack://application:,,,/Subfolder/TextFile.txt");
var resourceStream = Application.GetResourceStream(uri);
using (var reader = new StreamReader(resourceStream.Stream))
{
    var text = reader.ReadToEnd();
    ...
}

试试:

        using (StreamReader sr = new StreamReader(System.AppDomain.CurrentDomain.BaseDirectory + "/Subfolder/TextFile.txt"))
        {
            String line = sr.ReadToEnd();
            Console.WriteLine(line);
        }

你可以这样做:

  string file = @"pack://application:,,,/" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ";component/Subfolder/TextFile.txt";
      using (var sr = new StreamReader(System.Windows.Application.GetResourceStream(new Uri(file)).Stream))
      {
          var data= sr.ReadToEnd();
      }

例如,这是您的项目结构

+ProjectName
+--+imagesFolder
|  +--amogus.png
|
+--App.xaml
+--MainWindow.xaml
+--etc.

,你想在你的xaml窗口访问到amogus.png,有两种方法:

注意,这样imagesFolder将在发布版本中对用户可见

  1. 设置amogus.png Build ActionContentCopy to Output DirectoryCopy always更多信息然后从构建菜单中选择rebuild,然后将其添加到窗口xaml
    <Image Source="pack://siteoforigin:,,/imagesFolder/amogus.png" ></Image>

注意,这样imagesFolder在发布版本中对用户是不可见的

  • 设置amogus.png Build ActionResourceCopy to Output DirectoryDo not copyblank更多信息,然后从构建菜单中选择rebuild,然后将其添加到窗口xaml
  •     <Image Source="/imagesFolder/amogus.png" ></Image>
    
    更详细