如何始终使用C#StreamWriter写入现有本地驱动器

如何始终使用C#StreamWriter写入现有本地驱动器,c#,directory,storage,streamwriter,C#,Directory,Storage,Streamwriter,为糟糕的标题措辞道歉 我在我的C#程序中设置了一个StreamWriter,它创建并写入本地存储驱动器上的多个文本文件。问题是,当我在多台机器上测试此程序时,不同机器的驱动器名称不一致,并且不总是有C:,D:,等等。因此,我在尝试写入不存在的驱动器时遇到错误 我试图不指定要写入的驱动器,希望它默认为现有驱动器,因为特定位置对我的需要不重要。也就是说,“C:\\wLocation.txt”变成了“wLocation.txt”,但这似乎并没有解决任何问题 代码: 我对StreamWriter不是特别

为糟糕的标题措辞道歉

我在我的C#程序中设置了一个
StreamWriter
,它创建并写入本地存储驱动器上的多个文本文件。问题是,当我在多台机器上测试此程序时,不同机器的驱动器名称不一致,并且不总是有C:,D:,等等。因此,我在尝试写入不存在的驱动器时遇到错误

我试图不指定要写入的驱动器,希望它默认为现有驱动器,因为特定位置对我的需要不重要。也就是说,
“C:\\wLocation.txt”
变成了
“wLocation.txt”
,但这似乎并没有解决任何问题

代码:

我对StreamWriter不是特别了解,因此解决方案可能相当简单,但如果有任何帮助,我将不胜感激。

您可以使用获取机器上的驱动器列表:

DriveInfo[] allDrives = DriveInfo.GetDrives();

foreach (DriveInfo d in allDrives)
{
    Console.WriteLine(d.Name); //C:\ etc.
}
然后,您可以简单地组合给定卷标的文件名和所需的文件名:

var filePath = d.Name + "filename.txt";
或者更好:

var filePath = Path.Combine(d.Name, "filename.txt");

为了应对不同机器上的不同驱动器,您有几个选项:

  • 使用相对文件路径,例如
    locationFile=“wLocation.txt”
    将文件写入当前目录
  • 使用特殊文件夹,例如Documents或AppData。您可以使用该方法获取其中一个目录并创建如下完整路径:
    locationFile=path.Combine(sysFolderPath,“wLocation.txt”)
    
  • 使文件夹在应用程序中可配置

请注意,除了获取在特定计算机上工作的文件夹路径外,还需要注意目录的权限。特别是,如果在
程序文件
下安装应用程序,由于权限的原因,第一个选项可能无法工作

我会考虑使用GestPurfPATH,因为在那里几乎总是有写入的权限。
var filePath = Path.Combine(d.Name, "filename.txt");