如何在安装应用程序的文件夹内创建文件夹和文件?c#
我想能够在安装应用程序的文件夹内设置默认文件夹和文件创建?因为此应用程序将在多台机器上使用,所以我无法指定路径,如如何在安装应用程序的文件夹内创建文件夹和文件?c#,c#,C#,我想能够在安装应用程序的文件夹内设置默认文件夹和文件创建?因为此应用程序将在多台机器上使用,所以我无法指定路径,如C://Users/PcName/etc.有什么非常简单的方法吗?您可以使用此代码获取可执行文件的路径(大多数情况下,实际上它返回当前工作目录) 您可以使用此代码获取可执行文件的路径(大多数情况下,实际上它返回当前工作目录) 这适用于web和windows应用程序: Environment.CurrentDirectory = AppDomain.CurrentDomain.Base
C://Users/PcName/etc.
有什么非常简单的方法吗?您可以使用此代码获取可执行文件的路径(大多数情况下,实际上它返回当前工作目录)
您可以使用此代码获取可执行文件的路径(大多数情况下,实际上它返回当前工作目录)
这适用于web和windows应用程序:
Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;
这适用于web和windows应用程序:
Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;
如果只指定一个不以驱动器号开头的路径,则该路径将与应用程序运行的位置相关。e、 g.以下程序将在应用程序的本地文件夹中创建文件夹和文件
类程序
{
静态void Main(字符串[]参数)
{
var installedLocation=Directory.GetParent(Assembly.getExecutionGassembly().Location);
var di=installedLocation.CreateSubdirectory(“MyFolder”);
File.WriteAllText(Path.Combine(di.FullName,“File.txt”),“这将写入文件”);
var installedPath=AppDomain.CurrentDomain.BaseDirectory;
var di2=Directory.CreateDirectory(Path.Combine(installedPath,“MyFolder2”);
File.WriteAllText(Path.Combine(di.FullName,“File2.txt”),“这将写入文件”);
}
}
如果您只指定一个不以驱动器号开头的路径,则该路径将与应用程序运行的位置相关。e、 g.以下程序将在应用程序的本地文件夹中创建文件夹和文件
类程序
{
静态void Main(字符串[]参数)
{
var installedLocation=Directory.GetParent(Assembly.getExecutionGassembly().Location);
var di=installedLocation.CreateSubdirectory(“MyFolder”);
File.WriteAllText(Path.Combine(di.FullName,“File.txt”),“这将写入文件”);
var installedPath=AppDomain.CurrentDomain.BaseDirectory;
var di2=Directory.CreateDirectory(Path.Combine(installedPath,“MyFolder2”);
File.WriteAllText(Path.Combine(di.FullName,“File2.txt”),“这将写入文件”);
}
}
你试图做的是不可取的;如果您的应用程序是使用推荐的默认方法安装的(遵循Microsoft指南),则应用程序将位于C:\Program Files
下的目录中(或程序文件文件夹可能被重定向的位置),运行应用程序的用户将无权对该目录进行写入访问,因此,目录创建将失败
也就是说,您不能使用环境.CurrentDirectory
,因为它可能是也可能不是应用程序可执行文件所在的目录,也可能不是CurrentDomain.BaseDirectory
,因为这也没有意义(文档说明它是加载程序将搜索程序集的目录,但它可能是应用程序可执行文件的目录,也可能不是)
从其他答案复制,找到程序集目录的正确方法是
public static string AssemblyDirectory
{
get
{
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
return Path.GetDirectoryName(path);
}
}
获得路径后,可以尝试使用System.IO.directory.CreateDirectory()
创建目录,并使用System.IO.file.writealText()
或其同级创建文件,或者使用任何其他标准创建文件的方法
您可能还希望使用较新的
Assembly.getExecutionGassembly().Location
属性,并在该属性上使用Path.GetDirectoryName()
。如果您的应用程序是使用推荐的默认方法安装的(遵循Microsoft指南),则不建议您尝试这样做应用程序将位于C:\Program Files
下的目录中(或程序文件文件夹可能被重定向的位置),运行应用程序的用户将无权写入该目录,因此目录创建将失败
也就是说,您不能使用环境.CurrentDirectory
,因为它可能是也可能不是应用程序可执行文件所在的目录,也可能不是CurrentDomain.BaseDirectory
,因为这也没有意义(文档说明它是加载程序将搜索程序集的目录,但它可能是应用程序可执行文件的目录,也可能不是)
从其他答案复制,找到程序集目录的正确方法是
public static string AssemblyDirectory
{
get
{
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
return Path.GetDirectoryName(path);
}
}
获得路径后,可以尝试使用System.IO.directory.CreateDirectory()
创建目录,并使用System.IO.file.writealText()
或其同级创建文件,或者使用任何其他标准创建文件的方法
您可能还想使用较新的
Assembly.getExecutionGassembly().Location
属性,并在该属性上使用Path.GetDirectoryName()
。使用ASESSSMBLY Location获取路径迄今为止您做了哪些尝试?没有人会实现您的应用程序。但我们期待着帮助您:).我刚创建了我的路径,包括我的电脑名。但现在我必须更改它,我只是想知道是否有一些非常简单的方法可以做到这一点,Candide为我的问题提供了解决方案,我只需要再等5分钟,将其标记为正确答案:))您可以从Environment.GetFolderPath(Environment.SpecialFolders.desktop)获取当前用户的桌面。不要试图构建路径,它可能不是您期望的路径,请询问系统。@Mystia我建议您测试Alex的方法,并将其标记为正确答案,因为这似乎是更好的解决方案。使用asessmbly Location获取路径到目前为止,您尝试了什么?没有人会实现你的应用程序。但我们期待着帮助你:)。我刚刚有了我的路径,包括我的电脑名si