不好意思的标题的道歉
我在C#程序中设置了StreamWriter
,该程序创建然后写入本地存储驱动器上的多个文本文件。问题是,当我在多台计算机上测试该程序时,各计算机之间的驱动器名称不一致,并且并不总是具有C:,D:等。因此,在尝试写入驱动器时遇到错误不存在。
我试图不指定要写入的驱动器,以希望它将默认为现有驱动器,因为特定位置对于我的需求而言并不重要。即"C:\\wLocation.txt"
变成"wLocation.txt"
,但这似乎无法解决任何问题。
代码:
public static string getWeatherLocation()
{
String locationFile = "C:\\wLocation.txt";
String location;
try
{
System.IO.StreamReader reader = new StreamReader(locationFile);
location = reader.ReadLine();
reader.Close();
return location;
}
catch (Exception ex)
{
return null;
}
}
我对StreamWriter的知识不是特别了解,因此该解决方案可能非常简单,但会有所帮助。
答案 0 :(得分:1)
您可以使用System.IO.DriveInfo.GetDrives
获取计算机上的驱动器列表:
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");
答案 1 :(得分:1)
为了应付不同计算机上的不同驱动器,您有几种选择:
locationFile = "wLocation.txt"
会将文件写入当前目录。 locationFile = Path.Combine(sysFolderPath, "wLocation.txt");
。 请注意,除了获取适用于特定计算机的文件夹路径外,您还需要注意目录的权限。特别是如果您在Program Files
下安装应用程序,则由于权限的原因,第一个选项可能不起作用。