如何用文件名替换路径?

时间:2015-08-10 18:39:07

标签: c# file datagridview path resources

您好我必须在另一名学生之后完成学校项目。 并且在整个程序中他使用绝对路径来存档,问题是它只能在一台计算机上运行。因为这条路是独一无二的。 有人能告诉我如何用文件名替换这条路径?

string content = File.ReadAllText(filePath);
            this.DocumentXml = XDocument.Parse(content);
            this.xmlInfo = XDocument.Parse(content);
            var groups = this.DocumentXml.Root.Elements("group");

            foreach (var group in groups)
            {
                checkedListBox1.Items.Add(group.Attribute("name").Value);
            }
            // Adding data from your DNSFile to dataGridView1

            hostsDataSet.Clear();
            hostsDataSet.ReadXml(filePath);
            dataGridView1.DataSource = hostsDataSet;
            dataGridView1.DataMember = "item";

在这种情况下" filepath"是带有绝对路径的文本文件,包含他使用的文件。 你能帮助我吗?

这是我使用Application.LocalUserAppDataPath创建的文件的完整路径: C:\ Users \ praktykant1 \ AppData \ Local \ WindowsFormsApplication1 \ WindowsFormsApplication1 \ 1.0.0.0 \ test.txt

在我的情况下的问题是我必须创建我在AppData / Local文件夹中的程序中使用的文件。所以在每台计算机上路径都是不同的。这个程序必须适用于每台计算机。我只是初学者,所以我在这个主题上是绿色的。

4 个答案:

答案 0 :(得分:1)

这正是配置文件用于...可能执行相同代码的环境之间的差异。

据推测,问题是filePath是硬编码的,是吗?像这样的东西?:

var filePath = @"c:\some\path\to\a\file.xml";

相反,请将其设为配置值。首先在App.config节点中向Web.config(或appSettings,如果这是一个Web应用程序)添加一个条目:

<appSettings>
    <add key="filePath" value="c:\some\path\to\a\file.xml" />
    <!-- any other settings already in place... -->
</appSettings>

然后使用ConfigurationManager获取该设置。 (您可能需要在项目中添加对System.Configuration程序集的引用。)像这样:

var filePath = ConfigurationManager.AppSettings["filePath"];

你也可能会执行一些错误检查,以确保那里有一个值(确保filePath不会以空字符串或空字符串结束,即确保),确保文件存在等等。

此时,您可以更改配置文件中的值,而无需重新编译代码。因此,任何新环境都可以设置配置设置并使用应用程序。

答案 1 :(得分:0)

如果将变量filepath设置为文件名 - 它将在启动可执行文件的目录中查找此文件(默认情况下)。这称为工作目录,您可以找到如何更改工作目录online

如果您想避免使用完整(或相对)路径并只使用文件名 - 希望它位于该工作目录中。

答案 2 :(得分:0)

要获取路径的文件名,只需执行此操作即可。 例如,如果你的路径是&#34; C:\ hello.txt&#34;,那就变成&#34; hello.txt&#34;

string fileName = Path.GetFileName(filepath);

如果您不希望文件名具有任何扩展名

string fileNameNoEx = Path.GetFileNameWithoutExtension(fileName);

这样就变成了&#34;你好&#34;

答案 3 :(得分:0)

如果是ASP.net,你可以这样做,

      if(FileUploadControl.HasFile)
      {
          try
          {
                string filename = Path.GetFileName(FileUploadControl.FileName);
                FileUploadControl.SaveAs(Server.MapPath("~/") + filename);
                StatusLabel.Text = "Upload status: File uploaded!";
          }
          catch(Exception ex)
          {
                StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;
          }
     }