UnauthorizedAccessException - Попытка сериализации JSON в файл - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь создать файл 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.Я дал доступ к папке, и я также попытался запустить программу от имени администратора.

Все, что я нашел в Интернете, предлагало эти два метода, но они не работали.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Я считаю, что ваш код должен работать.Вы можете попытаться открыть командную строку и набрать

cd c:\Users\LOrdBenche\source\repos\parsingTest\parsingTest\producedJSON

затем

dir > test.txt

Если вы получаете сообщение «Доступ запрещен», это потому, что у вас действительно недостаточно правзаписать в эту папку.

0 голосов
/ 21 ноября 2018

Вы оба используете дословный строковый литерал (@"") и избегаете обратных косых черт вашего пути.@ перед строковым литералом заставит его игнорировать экранированные обратные слэши.Таким образом, он буквально пытается записать в 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))

// ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...