如何用文件名替换路径?
本文关键字:路径 替换 文件名 何用 | 更新日期: 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;
}
}