IOException: Совместное нарушение на пути - PullRequest
0 голосов
/ 06 июля 2019

Вот мой код для создания файла .dat или добавления к нему текста:

public static void saveGameAnalyseData(GameAnalyseData gameAnalyseData)
{
    Debug.Log(JsonUtility.ToJson(gameAnalyseData) + " " + Application.persistentDataPath + "/" + gameAnalyseData.gameID + ".dat");

    if (File.Exists(Application.persistentDataPath + "/" + gameAnalyseData.gameID + ".dat"))
    {
        File.AppendAllText(Application.persistentDataPath + "/" + gameAnalyseData.gameID + ".dat", JsonUtility.ToJson(gameAnalyseData) + Environment.NewLine);
    }
    else
    {
       File.Create(Application.persistentDataPath + "/" + gameAnalyseData.gameID + ".dat");
        if (File.Exists(Application.persistentDataPath + "/" + gameAnalyseData.gameID + ".dat"))
        {
            File.AppendAllText(Application.persistentDataPath + "/" + gameAnalyseData.gameID + ".dat", JsonUtility.ToJson(gameAnalyseData) + Environment.NewLine);
        }
    }
}

Но я получаю

IOException: нарушение общего доступа к пути на втором File.AppendAllText вызове ...

Я также попробовал этот код:

    if (File.Exists(Application.persistentDataPath + "/" + gameAnalyseData.gameID + ".dat"))
    {
        File.AppendAllText(Application.persistentDataPath + "/" + gameAnalyseData.gameID + ".dat", JsonUtility.ToJson(gameAnalyseData) + Environment.NewLine);
    }
    else
    {
       File.Create(Application.persistentDataPath + "/" + gameAnalyseData.gameID + ".dat");
        StreamWriter sw = new StreamWriter(Application.persistentDataPath + "/" + gameAnalyseData.gameID + ".dat");
        sw.WriteLine(JsonUtility.ToJson(gameAnalyseData) + Environment.NewLine);
        // close the stream
        sw.Close();
    }

но я получаю ту же ошибку в этой строке:

StreamWriter sw = new StreamWriter(Application.persistentDataPath + "/" + gameAnalyseData.gameID + ".dat");

PS: Следует отметить, что когда файл существует, он правильно добавляет к нему текст, проблема заключается в том, что при создании файла и записи в него в первый раз

1 Ответ

1 голос
/ 06 июля 2019

Вы можете просто заменить весь свой код следующей строкой кода:

File.AppendAllText(Application.persistentDataPath + "/" + gameAnalyseData.gameID + ".dat", JsonUtility.ToJson(gameAnalyseData) + Environment.NewLine);

Поскольку метод AppendAllText открывает файл, добавляет указанную строку в файл, а затем закрывает файлЕсли файл не существует, этот метод создает файл, записывает указанную строку в файл и закрывает файл.

В любом случае, если вы хотите использовать свой собственный код, везде, где вы используете File.Create(filePath);Замените этим кодом File.Create(filename).Close();.Потому что File.Create(filePath) создает или перезаписывает файл по указанному пути, а затем возвращает открытый объект FileStream в этот файл.Если вы хотите, вы можете использовать этот FileStream объект для работы с вашим файлом, если вы не хотите, то вы должны закрыть его.

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