c# - 文件 ReadAllText 的路径错误(C#)
问题描述
我有一个本地项目,未来将在筹备中。因此,我需要使用相对路径来获取和读取 json 文件。但是使用File.ReadAllText我得到了以下答案:
> File.ReadAllText("MyJsonFiletoRead.json", Encoding.Default)
System.IO.FileNotFoundException: Could not find file 'C:\Users\15071\MyJsonFiletoRead.json'
请注意,“C:\Users\15071”不是项目文件夹,这是我的 Windows 用户文件夹。我的结构在这里:
C:\Projetcs\MyProjectTest -->> Project folder
C:\Projetcs\MyProjectTest\MyClass.cs -->> The class where I'm calling the ReadAllText
C:\Projetcs\MyProjectTest\MyJsonFiletoRead.json -->> My json file that I'm trying to find
我尝试了以下命令来检查我的 PATH,但所有答案都是错误的:
> Environment.CurrentDirectory
"C:\\Users\\15071"
> Directory.GetCurrentDirectory()
"C:\\Users\\15071"
AppDomain.CurrentDomain.BaseDirectory
"c:\\program files (x86)\\microsoft visual studio\\2019\\community\\common7\\ide\\commonextensions\\microsoft\\managedlanguages\\vbcsharp\\languageservices\\DesktopHost\\"
有没有人解决这个问题?
注意:如果我使用完整路径,它可以工作:
File.ReadAllText("C:/Projetcs/MyProjectTest/MyJsonFiletoRead.json", Encoding.Default)
解决方案
如果文件位于可执行文件的同一文件夹中,则只需传递文件名:
File.ReadAllText("MyJsonFiletoRead.json", Encoding.Default);
如果该文件位于可执行文件所在文件夹的相对路径中,则可以获取程序集位置并将其与相对路径组合:
var path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "..\\..\\MyJsonFiletoRead.json");
File.ReadAllText(path, Encoding.Default);
推荐阅读
- angular - 带图像的角度自定义拖放流
- node.js - 将应用程序本地连接到本地 Mongo db,并将 heroku 上的应用程序连接到 Mongo Atlas
- javascript - 如何根据输入过滤图像
- wicket - 防止页面过期
- python - 从 PHP 脚本调用 Python 中的 Webdriver 时,Firefox 无法打开
- reactjs - 同一个参数名可以作为函数param和local使用吗?
- python - 使用 Python 从 Parquet 文件中读取基于索引的范围
- android - 我在使用 java 的 android studio 中运行应用程序时遇到问题?
- python - 朴素贝叶斯相同概率
- java - 多模块 Java 项目是否应该有多个 Gradle 项目