我有一个本地项目,未来将在筹备中。 因此,我需要使用相对路径来获取和读取 json 文件。 但是使用 File.ReadAllText 我得到以下答案:
> File.ReadAllText("MyJsonFiletoRead.json", Encoding.Default)
System.IO.FileNotFoundException: Could not find file 'C:\Users\15071\MyJsonFiletoRead.json'
请注意,“C:\Usersh71”不是项目文件夹,这是我的 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
我已尝试以下命令来检查我的路径,但所有答案都是错误的:
> 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);
最好简单地使用“Properties.Resources”作为文件,重要的是“FileType=Binary”,因为字符串可能会被截断,然后:
byte[] aa = ohaERP_EDI_Server_NET7.Properties.Resources.signature;
MemoryStream MS = new MemoryStream(aa);
StreamReader sr = new StreamReader(MS);
string signature = sr.ReadToEnd();
你需要找到当前文件夹,然后读取文件
var currentFolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)
File.ReadAllText(currentFolder + "/MyJsonFiletoRead.json")