如何用文件名替换路径?

本文关键字:路径 替换 文件名 何用 | 更新日期: 2023-09-27 18:07:16

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

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/本地文件夹。所以在每台计算机上,路径是不同的。这个程序必须能在每台电脑上运行。

如何用文件名替换路径?

我对这门学科还是一窍不通。

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

大概问题是filePath是硬编码的,是吗?像这样的?:

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

让它成为一个配置值。首先在appSettings节点中添加一个条目到App.config(或者Web.config,如果这是一个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不会以null或空字符串结束,也就是说),确保文件存在,等等。

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

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

string fileName = Path.GetFileName(filepath);

如果你不喜欢你的文件名有任何扩展名

string fileNameNoEx = Path.GetFileNameWithoutExtension(fileName);

这样就变成了"hello"

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

如果你想避免使用一个完整的(或相对的)路径,而只使用文件名-期望它在那个工作目录

在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;
          }
     }