C# Visual Studio 2012如何为用户访问文本文件资源?
我制作了一个程序,用户可以跟踪那里的梦幻足球队。下面的代码来自其中一个表单,允许用户根据特定的规则选择他们的球队。这里的问题不是写入文件,而是从写入的文件中读取 此文件位于我的资源中,它包含用户输入的玩家。问题是,用户必须访问该文本文件,此时,用户是否可以访问或编辑该文件并不重要,这是一个人的个人项目;但是,按照我的设置方式,该程序将仅在我的计算机上运行,因为我将使用的路径是文本文件属性的完整路径 我试过使用properties.Resources.resource,如下所示,最近我试过使用Application.StartupPath+“/FantasyFootball.txt”。我还没有尝试过反思,因为我不确定这是否需要反思。我的想法应该是,我发布这个程序,它应该在任何计算机上工作;但是,当我尝试在VisualStudio外部运行它时,出现了一个异常,即找不到AppData文件夹 现在的问题是,当我在VisualStudio中按下“发布”按钮时,实际会发生什么?我得到了安装文件和应用程序文件文件夹以及实际的.application文件,这些文件最终位于app.Publish文件夹的release文件夹中的my bin文件夹中。我还没有经验知道这一切意味着什么,或者如何处理它?有什么建议吗C# Visual Studio 2012如何为用户访问文本文件资源?,c#,visual-studio-2012,file-io,resources,text-files,C#,Visual Studio 2012,File Io,Resources,Text Files,我制作了一个程序,用户可以跟踪那里的梦幻足球队。下面的代码来自其中一个表单,允许用户根据特定的规则选择他们的球队。这里的问题不是写入文件,而是从写入的文件中读取 此文件位于我的资源中,它包含用户输入的玩家。问题是,用户必须访问该文本文件,此时,用户是否可以访问或编辑该文件并不重要,这是一个人的个人项目;但是,按照我的设置方式,该程序将仅在我的计算机上运行,因为我将使用的路径是文本文件属性的完整路径 我试过使用properties.Resources.resource,如下所示,最近我试过使用Ap
private void btnShowRoster_Click(object sender, EventArgs e)
{
string masterRosterPath = Properties.Resources.FantasyFootball;/*
this is where the problem is I am not sure what to make the path
so that the user will be able to acess the file*/
FileStream fs = new FileStream(masterRosterPath, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
string playerIn;
string[] fields;
playerIn = sr.ReadLine();
const char DELIM = ',';
string player = " ";
while (playerIn != null)
{
fields = playerIn.Split(DELIM);
player = Convert.ToString(fields[0]);
lbRoster.Items.Add(player);
playerIn = sr.ReadLine();
}
sr.Close();
fs.Close();
btnShowRoster.Enabled = false;
MessageBox.Show("Click on a player to add them to your team", "Choose Team", MessageBoxButtons.OK,MessageBoxIcon.Information);
}
根据我从您的问题中收集到的信息,您正在尝试访问已导入到项目资源文件夹中的文件 如果我理解正确,那么通过访问文件资源
FantasyFootball
返回的字符串实际上是文本文件的内容,而不是指向它的路径。因此,您可以直接使用其内容!不需要文件阅读器。当您发布应用程序时,它将随应用程序一起分发
执行以下操作时,资源的内容已加载到字符串中:
string masterRosterPath = Properties.Resources.FantasyFootball;
然后可以直接开始解析masterRosterPath
就这个问题展开讨论 如果您决定使用资源来包含用户的数据,您应该注意,这样的资源文件将不允许您通过代码动态修改其内容 例如,如果这是您的目标,您可以在加载文件(如果不存在)之前,或者在用户第一次运行应用程序时,在磁盘上以预定路径手动创建一个文件(如在可执行文件旁边,或单独的文件夹旁边,或完全在其他位置)。然后,您可以随意加载文件、编辑其内容并保存它。请注意,文件的内容在应用程序之外是可编辑的 也许这是您正在寻找的,而不是资源,但是您可以使用用户设置来保存该路径,而不是对其进行硬编码。您可以随意编辑这些路径,运行应用程序的计算机的每个用户都可以有不同的路径值 <>如果你只有几个字段保存一个玩家,你甚至可以考虑完全设置它们。这将使它们易于管理和访问。您还应该注意,这些设置也可以在应用程序之外进行编辑,因为它们会自动保存为XML文件,隐藏在AppData文件夹中。应用程序启动时,将为正确的用户加载设置 如果这听起来很有趣,请看一下MSDN
希望这是有帮助的 好的,如果我理解正确,使用masterPath=properties.resources.FantasyFootballTracker访问文件将不允许用户对文件进行更改。相反,我必须在项目外部创建这些文本文件,或者使用应用程序设置?我尝试使用Application.StartupPath+“/FantasyFootball.txt”来获取文件的路径,但是每次我在发布应用程序后运行应用程序时,都会出现一个异常,它找不到AppData文件夹,因此我不确定此时应该做什么,或者我在寻找什么?它找不到AppData文件夹本身,或者你提供的路径?这样安装时不会自动创建文件。System.IO.FileNotFoundException:找不到文件“C:\Users\user\AppData\Local\Apps\2.0\VWN40HAL.LPQ\B5YGWCN3.4JC\fant..tion_3460b927da4ef279_0001.0000_3396c544ffe1d0e3\FantasyFootball.txt”。文件名:“C:\Users\user\AppData\Local\Apps\2.0\VWN40HAL.LPQ\B5YGWCN3.4JC\fant..tion_3460b927da4ef279_0001.0000_3396c544ffe1d0e3\FantasyFootball.txt”这是在发布应用程序后运行安装文件时生成的异常,用户可以替换为任何个人文件夹的名称,但这是它正在查找的位置因为我的文件不在那里,所以我不确定该做什么这就是我的意思。与资源不同,文件不是自动创建的。在尝试读取之前,您需要检查它是否存在,如果不存在,则首先创建它。