#c# #windows #unity3d #system.io.file
#c# #Windows #unity3d #system.io.file
Вопрос:
Я пытаюсь найти файл на своем компьютере, чтобы я мог сохранить данные для входа в мою игру в этом определенном файле. У меня есть строка, которая содержит путь.
public string path = "C:/Users/DevelopVR/Documents";
//DevelopVR is my username
Тогда у меня будет это позже:
if (System.IO.File.Exists(path))
{
Debug.Log("Path exists on this computer");
}
else
{
Debug.LogWarning("Path does NOT exist on this computer");
}
Я также пытался заменить это:
else
{
Debug.LogWarning("Path does NOT exist on this computer");
}
С этим:
else if (!System.IO.File.Exists(path))
{
Debug.LogWarning("Path does NOT exist on this computer");
}
Но каждый раз, когда он регистрирует ошибку. Поэтому я не знаю, что делать. Похоже, что у других людей такая же проблема. Спасибо, если у вас есть ответ.
Комментарии:
1. попробуйте абсолютный путь, а не просто «Документы», используйте «C:UsersYourUsernameDocuments »
2. Нет. По-прежнему выводит «Путь НЕ существует на этом компьютере»
3. Рассмотрите каталог AppData для получения информации о конфигурации, а не документов.
4. @GraniteSOS Но вы пытаетесь проверить каталог или файл?
5. Я пытаюсь проверить наличие файла
Ответ №1:
Documents
это каталог, а не файл, поэтому вместо проверки на File
, проверьте на Directory
подобное:
if(File.Exists(path))
{
// This path is a file
ProcessFile(path);
}
else if(Directory.Exists(path))
{
// This path is a directory
ProcessDirectory(path);
}
Помните, что если вы хотите выполнить поиск по файлу, ваш path
файл должен иметь имя и расширение, подобное:
public string path = @"C:/Users/DevelopVR/Documents/MyFile.txt";
Комментарии:
1. Мне пришлось поместить данные, хранящиеся внутри папки, внутрь каталога.
Ответ №2:
«Documents» — это не реальный путь, это удобная ссылка на «специальную папку», предоставляемую Windows.
Из https://learn.microsoft.com/en-us/dotnet/api/system.environment.specialfolder?view=netcore-3.1
// Sample for the Environment.GetFolderPath method
using System;
class Sample
{
public static void Main()
{
Console.WriteLine();
Console.WriteLine("GetFolderPath: {0}", Environment.GetFolderPath(Environment.SpecialFolder.System));
}
}
/*
This example produces the following results:
GetFolderPath: C:WINNTSystem32
*/
Комментарии:
1. путь, указанный задавшим вопрос, действительно существует
2. Вопрос был отредактирован с тех пор, как я опубликовал этот ответ