Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/225: Рейтинг темы: голосов - 225, средняя оценка - 4.65
0 / 0 / 1
Регистрация: 16.09.2015
Сообщений: 51

Чтение файла из корня проекта

23.05.2017, 13:11. Показов 48697. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! У меня есть папка с текстовыми файлами в корне проекта! Подскажите пожалуйста, как обращаться к этим файлам??? перепробовал все что знал, но только полный путь к папке помогает обращаться к файлам
пример пути к файлу ниже
C#
1
string path = @"/Help/help1.doc";
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.05.2017, 13:11
Ответы с готовыми решениями:

Относительный путь файла относительно корня проекта
Файл находится в пакете проекта, нужно его открыть, указав относительный путь, используя конструкцию this.getClass().getPackage(). Путь к...

Чтение ini/txt файла из корня сайта
Доброго времени суток. Имеется следующее: 1. В корне сайта лежит файл с list.ini, который имеет следующую структуру: 100=7 ...

Создание файла-проекта (сохранение/чтение)
Добрый день, уважаемые коллеги! Поступила такая интересная задача. Есть программа, в процессе работы которой, в разных её окнах, для...

21
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
23.05.2017, 14:13
blackaleks,
В корне проекта это где? Если это там, где лежит файл проекта (.csproj), то обратиться можно так:
C#
1
2
            var exePath = AppDomain.CurrentDomain.BaseDirectory;//path to exe file
            var path = Path.Combine(exePath, "..\\..\\Help\\help1.doc");
Но вообще-то это неправильно. Приложение должно работать само по себе, без файлов проекта. Если вам в приложении нужно использовать папку Help, то ее нужно создать в проекте и закинуть туда нужные файлы:


Тогда нужные файлы буду автоматически копироваться в папку/подпапку, где находится exe файл. Обратиться из кода можно так:
C#
1
2
            var exePath = AppDomain.CurrentDomain.BaseDirectory;//path to exe file
            var path = Path.Combine(exePath, "Help\\help1.doc");
6
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18240 / 14154 / 5366
Регистрация: 17.03.2014
Сообщений: 28,841
Записей в блоге: 1
23.05.2017, 14:16
blackaleks, в момент работы приложения нужно забыть про проекты/решения. Вместо этого следует думать о структуре папок с точки зрения уже развернутого (установленного) приложения. Исходим из того что программа лежит в некой папке. Рядом с ней лежат все необходимые файлы и папки с файлами. Тогда программе нужно будет только определить имя папки где она находится и выстраивать пути уже относительно этой папки. Для этого делаем следующее:

а) В Visual Studio открываем свойства папки Help (она же включена в проект у тебя?) и ставим "Copy to output directory" = "Copy always" или "Copy if newer". Таким образом при компиляции любой конфигурации приложения в выходную папку будут скопированы нужные файлы. Изменения нужно всегда вносить в файлы которые включены в проект.

б) В коде формируем полный путь к файлу относительно каталога приложения
C#
1
string path = Path.Combine(AppDomain.Current.BaseDirectory, @"Help\help1.doc");
4
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690
19.01.2020, 22:18
Цитата Сообщение от OwenGlendower Посмотреть сообщение
а) В Visual Studio открываем свойства папки Help (она же включена в проект у тебя?) и ставим "Copy to output directory" = "Copy always" или "Copy if newer". Таким образом при компиляции любой конфигурации приложения в выходную папку будут скопированы нужные файлы. Изменения нужно всегда вносить в файлы которые включены в проект.
Для папки нет свойства "Copy to output directory".
Свойство "Copy to output directory" есть только для файлов, которые расположены в папке.

Получается нужно для каждого файла устанавливать свойство "Copy to output directory"?
Или можно всё таки сделать, чтобы свойство "Copy to output directory" можно было установить только для папки, а для файлов, которые помещены в папку, свойство "Copy to output directory" установится автоматически?
Миниатюры
Чтение файла из корня проекта   Чтение файла из корня проекта  
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18240 / 14154 / 5366
Регистрация: 17.03.2014
Сообщений: 28,841
Записей в блоге: 1
19.01.2020, 22:32
Soft17, увы придется ставить для каждого файла по отдельности. Если файлов много, то проще будет написать post build команды.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
19.01.2020, 22:51
Цитата Сообщение от OwenGlendower Посмотреть сообщение
увы придется ставить для каждого файла по отдельности
Там разве нельзя выделить сразу несколько файлов?
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18240 / 14154 / 5366
Регистрация: 17.03.2014
Сообщений: 28,841
Записей в блоге: 1
19.01.2020, 23:30
Someone007, можно. Совсем забыл про это.
0
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
19.11.2021, 14:06
Storm23
Я сделал как вы сказали: предварительно создал папку и закинул туда нужные файлы. Но хотя они отображаются в Обозревателе - но не обычным цветом и в коде к ним обратиться не могу и в свойствах нужных параметров для файлов нет. Я это обошел так. Создал контрол и когда пытался назначить ему рисунок в Окне Свойств то в диалоговом окне "Выбор ресурса" - добавил нужный рисунок, при этом папка с именем Resources создалась автоматически.
Скажите пожалста, как можно обойтись без такой многоходовочки - чтобы как вы сказали средствами ОП Win создать предварительно папку, закинуть туда файлы и чтобы VS их увидела ?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,037
Записей в блоге: 2
19.11.2021, 14:41
DLD, какое "действие при сборке" и "копирование" в свойствах вашего файла?
Попробуйте Очистить Проект - лучше просто удалив папку bin.
И заново собрать его.
Если свойства правильно установлены, то в в сборке (папка bin/Debug) должны быть ваши файлы в той же структуре вложения как и в проекте.

Если этого нет, то покажите скрины свойств файлов и структуры проекта в Обозревателе Решения.
0
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
19.11.2021, 14:55
спасибо что ответили. Повторяю, " хотя они (файлы) отображаются в Обозревателе - но не обычным цветом и в коде к ним обратиться не могу и в свойствах нужных параметров для файлов нет". В свойствах всего 4 параметра: Имя файла, Полный путь, Пользовательский инструмент, Пространство имен пользовательского инструмента.
Сейчас попытаюсь отправить снимок при помощи Ножниц
0
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
19.11.2021, 15:00
вот пытаюсь загрузить снимок
Миниатюры
Чтение файла из корня проекта  
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,037
Записей в блоге: 2
19.11.2021, 15:05
Цитата Сообщение от DLD Посмотреть сообщение
вот пытаюсь загрузить снимок
Понятно.
Файлы с пунктирной иконкой - это те которые находятся в каталоге Проекта, но не включены в его состав.

Сделайте ПКМ на названии папки Res, в контекстом меню выберите "Включить в проект".
1
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
19.11.2021, 15:10
Спасибо большое - получилось
0
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
20.11.2021, 01:48
Элд Хасп . . скажите пожалста, а можно поместить папку с файлами данных в папку Debug ? . . . я поместил туда файлы .csv .. . работает
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,037
Записей в блоге: 2
20.11.2021, 10:31
Цитата Сообщение от DLD Посмотреть сообщение
скажите пожалста, а можно поместить папку с файлами данных в папку Debug ? . . . я поместил туда файлы .csv .. . работает
Можно.
Именно это и делается при сборке проекта.
Папка "Debug" (для релиза "Release") является целевой по умолчанию для создания сборки.

НО!
Сборка создаётся каждый раз заново, при любых изменениях внесённых в проект.
И если вы "в ручную" переносите туда файлы, то они могут не отражать изменения внесённые в архитектуру проекта.
И как следствие, сборка не будет нормально работать.

Вам придётся всё время "в ручную" контролировать правильность сборки.
Зачем?
Лучше пусть это делают автоматические инструменты.

Так же в Debug могут накапливаться лишние не нужные файлы.
Поэтому эту папку время от времени стоит полностью очищать: Очисть Проект, Очистить Решение или даже в Проводнике просто удалить всю папку "bin".
1
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
26.12.2021, 17:53
Элд Хасп, такой вопрос. Я когда-то скопировал проект (средсвами Win в проводнике), потом доработал его, теперь в VS не видит вновь добавляемые файлы в окне Обозревателя решений, которые находятся в папке ...bin\Debug\Data\Image. Тут вы рекомендуете просто удалить папку "bin". Я правильно понимаю, что VS сама создаст ее заново но после этого мне прийдется внова добавить нужные ресурсы (картинки) ? . . . и потом - импртировать их в файл ресурсов проекта ?

Добавлено через 26 минут
Решено . .. нужно было в Обозревателе решений ЛКМ нажать на "Показать все файлы" . . . и они будут видны . . а дальше - повключать в проект как вы сказали
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,037
Записей в блоге: 2
27.12.2021, 00:27
Цитата Сообщение от DLD Посмотреть сообщение
Решено . .. нужно было в Обозревателе решений ЛКМ нажать на "Показать все файлы" . . . и они будут видны . . а дальше - повключать в проект как вы сказали
Неправильно!!!!

По пути bin\Debug\ находится сборка для режима Debug при настройках по умолчанию.
Если вы сделаете сборку Release, то вы опять "потеряете" свои файлы.
Или они у вас разместятся по какому-нибудь дикому пути bin\Release\bin\Debug\....
То же самое если вы зададите другой путь для сборки.

Файлы которые нужно включать сборку должны быть в ПРОЕКТЕ.
То есть (в вашем случае), вам в проекте нужно создать папку Data, в ней папку Image, и в ней поместить ваши файлы.
Свойства файлов должны быть "Содержание-Копировать...".
1
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
27.12.2021, 02:13
Элд Хасп, спасибо . .. прояснили . . . именно такой "дикий путь" и был . . . \bin\Debug\bin\Debug\Data\Image
0
0 / 0 / 0
Регистрация: 20.05.2020
Сообщений: 2
06.11.2022, 12:01
Надеюсь что я верно пишу.
Как пишет Storm32 мне очень помогло
C#
1
2
            var exePath = AppDomain.CurrentDomain.BaseDirectory;//path to exe file
                    var path = Path.Combine(exePath, "..\\..\\Help\\help1.doc");
в студии 2022 решил сделать апу на MAUI. И эта фигня путь сборки делает один, а при указании пути пишет C:/Windows/System32. Много читал, пробовал, помогло решение именно от СТорма с указанием путей. Сяб!
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,037
Записей в блоге: 2
06.11.2022, 12:39
Drayv, есть несколько способов получить путь к исполняемому файлу (условно, к экзешнику).

kolorotur в этом сообщении Узнать путь к исполняемому файлу приложения предлагает использовать Assembly.GetExecutingAssembly().Location:
C#
1
string exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Возможно kolorotur сможет объяснить в чём разница такого способа с AppDomain.CurrentDomain.BaseDirectory;.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.11.2022, 12:39
Помогаю со студенческими работами здесь

Чем файл проекта delphi с расширение dpr отличается от файла проекта dproj?
Они создаются оба в папке проекта - при запуске любого из них открывается проект. Есть ли какие-нибудь различия, если изменить и сохранить...

Как заменить чтение строки из консоли на чтение текстового файла?
основное задание: найти частоту суффикса (например, "ing") в текстовом документе. в прикреплённом коде текст вводится прямо в консоль,...

Чтение чисел из файла. Чтение после конца потока невозможно
Товарищи, помогите. В Pascal'e я не силен, так что не бейте меня ногами, но есть задача: написать обычную программу для расчета некоторых...

Чтение файла, чтение названия папки где находится файл, запись данных на PHP
Допустим у нас есть структура с папками типа Large -> Vehicles -> Firetruck_0 В этой папке лежит файл формата .dat Что нужно сделать? ...

Чтение бинарного файла - чтение первых 9 байт
Есть код, который читает первые 9 байт бинарного файла(заголовок записи) void ATS44Encoder::FileEncode() { QFile* file = new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru