如何始终使用 C# StreamWriter 写入现有的本地驱动器
How to always write to an existing local drive using C# StreamWriter
对于糟糕的标题措辞表示歉意,
我在我的 C# 程序中设置了一个 StreamWriter
,它创建并写入本地存储驱动器上的多个文本文件。问题是当我在多台机器上测试这个程序时 - 驱动器的名称在机器之间不一致并且并不总是有 C: , D: 等。结果我在尝试写入驱动器时遇到错误不存在。
我试图不指定要写入的驱动器,希望它将默认为现有驱动器,因为具体位置对我的需要并不重要。 IE。 "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 不是特别了解,所以解决方案可能相当简单,但如有任何帮助,我们将不胜感激。
您可以使用 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");
为了应对不同机器上的不同驱动器,您有几种选择:
- 使用相对文件路径,例如
locationFile = "wLocation.txt"
将文件写入当前目录。
- 使用特殊文件夹,例如文档或 AppData。您可以使用 Environment.GetFolderPath 方法获取这些目录之一并创建完整路径,如下所示:
locationFile = Path.Combine(sysFolderPath, "wLocation.txt");
。
- 使文件夹在您的应用程序中可配置。
请注意,除了获取适用于特定机器的文件夹路径外,您还需要注意目录的权限。特别是如果您在 Program Files
下安装应用程序,第一个选项可能会因权限问题而无法使用。
对于糟糕的标题措辞表示歉意,
我在我的 C# 程序中设置了一个 StreamWriter
,它创建并写入本地存储驱动器上的多个文本文件。问题是当我在多台机器上测试这个程序时 - 驱动器的名称在机器之间不一致并且并不总是有 C: , D: 等。结果我在尝试写入驱动器时遇到错误不存在。
我试图不指定要写入的驱动器,希望它将默认为现有驱动器,因为具体位置对我的需要并不重要。 IE。 "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 不是特别了解,所以解决方案可能相当简单,但如有任何帮助,我们将不胜感激。
您可以使用 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");
为了应对不同机器上的不同驱动器,您有几种选择:
- 使用相对文件路径,例如
locationFile = "wLocation.txt"
将文件写入当前目录。 - 使用特殊文件夹,例如文档或 AppData。您可以使用 Environment.GetFolderPath 方法获取这些目录之一并创建完整路径,如下所示:
locationFile = Path.Combine(sysFolderPath, "wLocation.txt");
。 - 使文件夹在您的应用程序中可配置。
请注意,除了获取适用于特定机器的文件夹路径外,您还需要注意目录的权限。特别是如果您在 Program Files
下安装应用程序,第一个选项可能会因权限问题而无法使用。