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