我当前正在构建WinForms应用程序,我需要创建一个bin
文件
我将在其中序列化数据。我让用户选择要将文件保存在哪个文件夹中,但是如果他不选择任何内容,我希望将文件保存在默认路径中。
问题是,我对Windows的文件系统不太熟悉,无法找到一个好的文件夹来保存文件。
我对此类文件夹的要求是:
所有Windows计算机都应该拥有它
所有Windows计算机的此文件夹的路径都相同
用于程序的自动生成的文件,作为“国际默认值”
用户不经常使用(“请勿触摸”文件夹)
这类事情的常见解决方案是什么?
答案 0 :(得分:0)
您可以使用专用的通用ProgramData文件夹:
string CommonAppDataFolderPath
= Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
+ Path.DirectorySeparatorChar
+ AssemblyCompany
+ Path.DirectorySeparatorChar
+ AssemblyTitle
+ Path.DirectorySeparatorChar;
public string AssemblyCompany
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
if ( attributes.Length == 0 )
{
return "";
}
return ((AssemblyCompanyAttribute)attributes[0]).Company;
}
}
public string AssemblyTitle
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
if ( attributes.Length > 0 )
{
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
if ( titleAttribute.Title != "" )
{
return titleAttribute.Title;
}
}
return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
}
}
答案 1 :(得分:-1)
它是AppData,您可以通过Environment.GetFolderPath获取它: (环境位于System.IO命名空间中)
string binPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SomeAppName");
// this will return something like this:
// C:\Users\SomeUserName\AppData\Roaming\SomeAppName
答案 2 :(得分:-1)
您可以使用System.Reflection
来标识程序集的debug或release文件夹中的路径:
public static string Path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "someapp");