C# WPF中如何通过相对路径实现文件读写?
解决相对路径指向项目文件夹的问题
给你两个实用方案,按需选择:
方案一:让文件随编译自动复制到输出目录
这是最省心的方式,直接让项目把文件同步到bin文件夹,原有的相对路径代码就能正常运行:
- 在Visual Studio里右键项目中的
input.txt文件,选择「属性」 - 在「复制到输出目录」下拉框里选「如果较新则复制」(或「始终复制」)
- 对
resources文件夹做同样操作(确保文件夹内的文件也继承这个设置)
编译完成后,input.txt和resources/output.txt会自动出现在bin/Debug或bin/Release目录下,你原有的相对路径代码就能直接生效。
方案二:手动拼接项目根目录路径
如果不想复制文件,直接读取项目文件夹内的文件,可以通过代码获取项目根目录,再拼接文件路径:
try { // 获取项目根目录:从bin目录往上退两级(bin→项目输出目录→项目根目录) string projectRoot = Directory.GetParent(AppDomain.CurrentDomain.BaseDirectory).Parent.Parent.FullName; // 拼接文件绝对路径 string inputPath = Path.Combine(projectRoot, "input.txt"); string outputPath = Path.Combine(projectRoot, "resources", "output.txt"); using StreamReader reader = new(inputPath); using StreamWriter writer = new(outputPath); string line; while ((line = reader.ReadLine()) != null) { writer.WriteLine(line); } // 注意:using语句会自动关闭流,不需要手动调用Close() } catch (FileNotFoundException) { MessageBox.Show("未找到文件"); }
额外提示
你原代码里的reader.Close()和writer.Close()是多余的,using语句会在代码块结束时自动释放流资源,保留反而会引发编译器警告,建议删掉。
内容的提问来源于stack exchange,提问作者user18773012
相关产品推荐
相关产品推荐

