附加string时难以保存模板

我试图加载一个Excel模板,然后将它保存在计算机名称和date时间追加到文件名。 我遇到的问题是最终产品的结果如下:

“Template.xlsx_MachineName_DateTime.xlsx”

我似乎无法find摆脱第一个.xlsx的方法。 我首先打开一个文件对话框,并将path保存为一个string。

OpenFileDialog fileDialog = new OpenFileDialog(); string fileName = fileDialog.FileName; 

然后我使用FileStream保存文件。

  using (FileStream outputfile = new FileStream(fileName + machineInfo.HostName + DateTime.Now.ToString("yyyy-MM-dd") + ".xlsx", FileMode.Create)) { package.SaveAs(outputfile); } 

有没有人遇到过这个? 我觉得应该有一种方法来使用path.combine,但不能拿出任何东西。 理想情况下,我希望结果是“Template_MachineName_DateTime.xlsx”。

使用System.IO.Path类来获取文件名/path的特定部分。

  string fileName = fileDialog.FileName; string newFilename = System.IO.Path.GetFileNameWithoutExtension(fileName) + machineInfo.HostName + DateTime.Now.ToString("yyyy-MM-dd") + ".xlsx" 

或者,如果你想要的东西,可以使用任何文件扩展名(不只是.xlsx):

  string fileName = fileDialog.FileName; string newFilename = System.IO.Path.GetFileNameWithoutExtension(fileName) + machineInfo.HostName + DateTime.Now.ToString("yyyy-MM-dd") + System.IO.Path.GetExtension(fileName); 

处理文件和目录时,Path类有很多非常有用的方法。

我真的推荐阅读MSDN的string方法文档。

 string filename = fileDialog.FileName; string newFilename; int fileExtensionIndex = filename.LastIndexOf(".xlsx") newFilename = filename.Insert(fileExtensionIndex ,"_" + machineInfo.HostName + "_" + DateTime.Now.ToString("yyyy-MM-dd")) using (FileStream outputfile = new FileStream(newFileName, FileMode.Create)) { package.SaveAs(outputfile); }