访问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();
,但似乎没有工作在这里。
我还应该指出,这个文件不应该包含在输出目录中,它需要嵌入到应用程序或其他术语中。
我应该怎么做?
应该可以:
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将在发布版本中对用户可见
- 设置amogus.png
Build Action
为Content
和Copy to Output Directory
到Copy always
更多信息然后从构建菜单中选择rebuild
,然后将其添加到窗口xaml
<Image Source="pack://siteoforigin:,,/imagesFolder/amogus.png" ></Image>
注意,这样imagesFolder在发布版本中对用户是不可见的
- 设置amogus.png
Build Action
为Resource
Copy to Output Directory
到Do not copy
或blank
更多信息,然后从构建菜单中选择rebuild
,然后将其添加到窗口xaml
<Image Source="/imagesFolder/amogus.png" ></Image>
更详细