我试图在解析后生成JSON文件。
在下面的代码中,我选择了将显示指定JSON文件的路径。
public class Movie
{
public string Name { get; set; }
public int Year { get; set; }
}
class Parsing
{
static void Main(string[] args)
{
//Just a movie object for the sake of testing
Movie movie = new Movie
{
Name = "Bad Boys",
Year = 1995
};
try
{
// serialize JSON to a string and then write string to a file
File.WriteAllText(@"c:\\Users\\LOrdBenche\\source\\repos\\parsingTest\\parsingTest\\producedJSON", JsonConvert.SerializeObject(movie));
// serialize JSON directly to a file
using (StreamWriter file = File.CreateText(@"c:\\Users\\LOrdBenche\\source\\repos\\parsingTest\\parsingTest\\producedJSON"))
{
JsonSerializer serializer = new JsonSerializer();
serializer.Serialize(file, movie);
}
}
catch (UnauthorizedAccessException e)
{
Console.WriteLine(e.ToString());
}
}
}
但是,问题是我一直在使用UnauthorizedAccessException
。我已经获得了对该文件夹的访问权限,并且还尝试了以管理员身份运行该程序。
我在网上发现的所有内容都建议使用这两种方法,但是它们没有用。
答案 0 :(得分:0)
您都在使用verbatim string literal(@""
)并转义了路径的反斜杠。字符串文字前的@
将导致它忽略转义的反斜杠。因此,它实际上是在尝试写入c:\\Users\\LOrdBenche\\source\\repos\\parsingTest\\parsingTest\\producedJSON
,这在Windows中是无效路径。
最重要的是,您仅在路径中提供一个文件夹。 File.WriteAllText()
和File.CreateText()
也需要文件名和文件扩展名。
此外,您可能应该将路径移至const
变量:
const string path = @"c:\Users\LOrdBenche\source\repos\parsingTest\parsingTest\producedJSON\test.json";
// ...
File.WriteAllText(path, JsonConvert.SerializeObject(movie));
// ...
using (StreamWriter file = File.CreateText(path))
// ...
答案 1 :(得分:0)
我相信您的代码应该可以工作。 您可以尝试打开命令提示符并键入
dir > test.txt
然后
pip3 install opencv-python
sudo apt-get install libcblas-dev
sudo apt-get install libhdf5-dev
sudo apt-get install libhdf5-serial-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libjasper-dev
sudo apt-get install libqtgui4
sudo apt-get install libqt4-test
如果收到“访问被拒绝”消息,那是因为您确实没有足够的权限写入该文件夹。