访问WPF项目中的文本文件

时间:2015-08-05 20:37:36

标签: c# wpf

我觉得我在这里遗漏了一些明显的东西......

我的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();一样简单,但似乎没有任何工作。

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

我该怎么做?

3 个答案:

答案 0 :(得分:3)

这应该有效:

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();
    ...
}

答案 1 :(得分:1)

你可以这样做:

  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();
      }

答案 2 :(得分:0)

试试:

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