C# 将程序指向资源文件夹
我正在制作一个应用程序,它将在另一台计算机上打开,它依赖于在编译资源中阅读。我能够使它读取给定路径的文件内容,但我需要它自动找到任何使用它的计算机上的资源文件夹的路径 代码是C# 将程序指向资源文件夹,c#,path,resources,filepath,readfile,C#,Path,Resources,Filepath,Readfile,我正在制作一个应用程序,它将在另一台计算机上打开,它依赖于在编译资源中阅读。我能够使它读取给定路径的文件内容,但我需要它自动找到任何使用它的计算机上的资源文件夹的路径 代码是 private void readFile() { string path = ; string[] lines = System.IO.File.ReadAllLines(path); for (int i = 0; i <= 10; i++)
private void readFile()
{
string path = ;
string[] lines = System.IO.File.ReadAllLines(path);
for (int i = 0; i <= 10; i++)
{
if (i == 2)
{
media[0, 0] = lines[i];
System.Diagnostics.Debug.WriteLine(media[0, 0]);
}
if (i == 3)
{
media[0, 1] = lines[i];
System.Diagnostics.Debug.WriteLine(media[0, 1]);
}
if (i == 5)
{
media[1, 0] = lines[i];
System.Diagnostics.Debug.WriteLine(media[1, 0]);
}
if (i == 6)
{
media[1, 1] = lines[i];
System.Diagnostics.Debug.WriteLine(media[1, 1]);
}
if (i == 8)
{
media[2, 0] = lines[i];
System.Diagnostics.Debug.WriteLine(media[2, 0]);
}
if (i == 9)
{
media[2, 1] = lines[i];
System.Diagnostics.Debug.WriteLine(media[2, 1]);
}
if (i == 10)
{
media[2, 2] = lines[i];
System.Diagnostics.Debug.WriteLine(media[2, 2]);
}
}
}
private void readFile()
{
字符串路径=;
string[]lines=System.IO.File.ReadAllLines(路径);
对于(inti=0;i正确的处理方法,在我看来是这样的
string path = @".\myrelateive\path\toResources\myFile.txt";
FileInfo myFile = new FileInfo(path);
string[] lines = System.IO.File.ReadAllLines(myFile.FullName);
基本上,您应该只在源代码中使用相对路径。为了使其更加健壮,您可以使用DirectoryInfo
和FileInfo
等类从相对路径获取完整路径
除此之外,在解决方案资源管理器中,您需要确保在生成时将资源复制到输出目录。方法是右键单击资源并选择“查看属性”,将有一个名为“复制到输出”的设置。选择“复制(如果更新)”或“始终复制”。这将确保资源文件与bi绑定当您构建解决方案时,这些代码应该是可移植的(假设机器的其他所有内容都类似于.NET版本ect,这超出了本问题的范围)。如果“…其他所有内容都可以正常工作…”然后从问题中删除它,只显示相关代码。我添加了它,以便清楚它的作用。无论如何,谢谢。谢谢,我明天再次开始编码时会查看它。请记住大多数(全部?)文件操作使用Environment.CurrentDirectory
解析相对路径。这通常与调用程序集所在的目录不同。根据我的经验,在这种情况下,更常见的是希望从调用程序集的位置解析相对路径。Path.Combine(Path.GetDirectoryName(Assembly.getExecutionGassembly().Location),@“my\relative\path.txt”)
通常是解析相对路径的最佳方法。您应该检查.Location
是否不返回null,这可能会发生在从internet下载的程序集上。