C# 如何用文件名替换路径?

C# 如何用文件名替换路径?,c#,file,datagridview,path,resources,C#,File,Datagridview,Path,Resources,你好,我必须在另一个学生之后完成学校的项目。 在整个程序中,他使用了文件的绝对路径,问题是它只能在一台计算机上工作。因为这条路是独一无二的。 有人能告诉我如何用文件名替换这个路径吗 string content = File.ReadAllText(filePath); this.DocumentXml = XDocument.Parse(content); this.xmlInfo = XDocument.Parse(content);

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

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\test.txt


我的问题是,我必须在AppData/Local文件夹中创建我在程序中使用的文件。因此,在每台计算机上,路径将不同。这个程序必须在每台计算机上运行。我只是个初学者,所以我对这门课不太熟悉。

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

大概问题是文件路径是硬编码的,是吗?像这样的

var filePath = @"c:\some\path\to\a\file.xml";
相反,将其设置为配置值。如果appSettings节点中的App.config或Web.config是Web应用程序,请首先向其添加一个条目:

您还可以执行一些错误检查,以确保其中有一个值确保filePath不会以null或空字符串结束,也就是说,确保文件存在,等等

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

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


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

要获取路径的文件名,只需执行以下操作。 例如,如果您的路径是C:\hello.txt,它将变成hello.txt

string fileName = Path.GetFileName(filepath);
如果您不希望文件名有任何扩展名

string fileNameNoEx = Path.GetFileNameWithoutExtension(fileName);

这样它就变成了hello(你好)

如果是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;
          }
     }

查看System.IO.Path类。它有几个静态方法可以帮助您…使用配置文件存储路径并从配置中检索路径值,以便您可以轻松更改路径。使用google,您也可以从这里开始,因为filePath是一个具有绝对路径的文本文件,为什么不也向我们显示路径?谢谢您,这很有帮助…你想做的事情并没有那么困难,所以请自便谷歌也不要硬编码文件路径这是.config文件为任何和所有设置而设计的,你希望你的应用程序从开始就读取这些设置,并将它们存储在.config文件中
string fileNameNoEx = Path.GetFileNameWithoutExtension(fileName);
      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;
          }
     }