Папка в форме Windows C # - PullRequest
0 голосов
/ 14 мая 2018

Это мое первое приложение для Windows.

Мне нужно работать с папками, которые я создал в своем проекте, и мне нужен доступ к папке данных, куда я помещаю файлы .txt.

Я пытаюсь:

string fileName = @"Data\TextFile1.txt";
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);

но я продолжаю получать эту ошибку:

невозможно найти часть пути.

Как можно объединить путь к папке с именем файла, чтобы после выпуска проекта все работало хорошо?

Это то, что я делаю в приложении asp.net:

Path.Combine(HttpRuntime.AppDomainAppPath, "Folder/FileName.txt");

Ответы [ 4 ]

0 голосов
/ 14 мая 2018

Ваши файлы данных должны быть доступны в выходной папке вместе с файлом приложения .exe.для этого:

  1. Открыть свойства каждого файла в папке Data.
  2. Выбрать Copy Always против Copy to output directory
  3. Затем создать приложение

Это скопирует папку Data вместе со всеми файлами в папке Bin\Debug и будет работать с вашим существующим кодом.

enter image description here

0 голосов
/ 14 мая 2018

Если я правильно понимаю, вы пытаетесь прочитать какой-то файл, который вы добавили в свое решение в Visual Studio. Во-первых, чтобы эти файлы были «развернуты», щелкните их в обозревателе решений, перейдите к инструменту «Свойства» и посмотрите «Копировать в выходной каталог». По умолчанию «Не копировать». Измените этот параметр на «Копировать всегда» или «Копировать, если новее». Теперь ваши файлы будут скопированы в выходной каталог при создании решения. Затем, чтобы получить текущий путь сборки во время выполнения, взгляните на: Получение пути текущей сборки

string path = (new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath;

из пути сборки вы можете получить путь к папке, в которой вы находитесь, затем вы можете использовать Path.Combine (), чтобы получить желаемый путь к файлу.

0 голосов
/ 14 мая 2018

Я бы не стал создавать какой-либо путь внутри приложения, если это возможно. NET Framework предоставляет файл конфигурации приложения для такого рода проблем. Вы должны просто добавить этот раздел в файл конфигурации (app.config при разработке, затем application.exe.config после компиляции)

<configuration>
  <appSettings>
    <add key="mydatafolder" value="e:\whateverpathyoulike"></add>
  </appSettings>
</configuration>

Затем во время выполнения прочитайте это значение из вашего кода

string path = ConfigurationManager.AppSettings["mydatafolder"];
path = Path.Combine(path, fileName);

Это легко модифицируется как автоматически, так и вручную, чтобы адаптироваться к любой среде, которую вы найдете на конечных компьютерах

0 голосов
/ 14 мая 2018

в C # .NET вы можете легко использовать свойства Environment при работе с формами.

Если вы хотите, например, путь Appdata сделать это:

string MyPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\" + MyFileName;

Но, пожалуйста, убедитесь, что файл / путь существует! Для этого вы можете использовать Файл .Exists -Функция:

if(File.Exists(MyPath))
{
//Do Something
}

(Для Файл -Класс необходим для пространства имен System.IO!)

EDIT:

Пример:

  string MyPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\MyConfig.txt";

if(File.Exists(MyPath))
{
 MessageBox.Show($"{MyPath} exists!");
}

Надеюсь, что помогло;)

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