我的文件夹中有两个图像文件,我必须在程序中调用它们。我用过:
AppDomain.curentDomain.baseDirectory + "Path and file name";
但这进入了我不想要的 bin 目录;我想从我的文件夹名称作为资源的根目录中读取文件夹,我在那里保存了我的文件并调用图像,所以请问代码是什么?
如何从 Windows 窗体应用程序的根目录中读取?
为什么不使用Environment.CurrentDirectory
?
string path = Environment.CurrentDirectory + @"\Image1.jpg";
FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);
Image image = Image.FromStream(stream);
stream.Close();
结合应用程序启动路径是一种更好的方式。:)Environment.CurrentDirectory
返回您的应用程序所在的当前路径。
通常,您必须将这些项目设置为复制到 bin 文件夹中。右键单击解决方案资源管理器/导航器,选择属性并设置“复制到输出目录”。希望这会奏效
你可以使用这个:
System.IO.Path.Combine(Environment.CurrentDirectory, "Path to File")
Environment.CurrentDirectory
将为您提供运行应用程序的路径。无论它是在 Visual Studio 中运行还是您的应用程序是否已部署都无关紧要。
示例用法
// Read image1.jpg from application folder, into Image object
Image myImage = Image.FromFile(System.IO.Path.Combine(Environment.CurrentDirectory, "image1.jpg"));
System.IO.Path.Combine(Application.StartupPath, @"..\..\YourFile.JPG")
返回文件的绝对路径,但这仅在您使用 VS 时有效,因为部署应用程序时没有 bin\Debug。
string path = Path.Combine(Application.StartupPath, @"..\..\YourFile.JPG");
FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);
Image image = Image.FromStream(stream);
stream.Close();
如果您打算将文件与 exe 一起发送,请在解决方案资源管理器中右键单击该文件,选择Include in project,再次右键单击,选择属性并设置Build Action : None和Copy to Output Directory : Copy if newer in the properties窗口,这将在您每次构建时将文件复制到您的 bin\Debug。然后你可以使用:
string path = Path.Combine(Application.StartupPath, "YourFile.JPG");
这将在 VS和部署时工作。最好将文件作为资源嵌入到可执行文件中,以便进行更清洁的部署。
采用Server.MapPath("/path/to/file")