Application deploy problem


1
Здравейте, колеги,
правя програмка, която да използва текстов файл - чете от него. Когато я деплойна и стартирам, хвърля ексепшън, че не е намерила файла, а той реално е в деплойнатия проект. Как мога да задам програмата сама да си намира файла т.е. нещо като динамичен път до файла? Ако днес я ползвам в C:\..., а утре реша да е в D:\... да работи нормално.
Благодаря :)



Отговори



1

Можеш да използваш "релативен" път до файла:

File.ReadAllText(@"myFile.txt"); // in the exe directory

File.ReadAllText(@"..\myFile.txt"); // in the parent directory

File.ReadAllText(@"files\myFile.txt"); // in 'files' directory in the exe dir

Файлът се търси спрямо директорията от която пускаш програмата, а не спрямо директорията на проекта - ако искаш файлът ти да се копира там където е компилирана програмата, след като си го добавил/а в проекта, цъкни му properties -> copy to output directory -> copy if newer.

Също така, имай предвид че в примера използвам literal низове (с @) за да не се налага да удвоявам backslash-овете.


от staafl (5770 точки)


0
Благодаря ти! А ReadAllText чете цялото съдържание на файла, така ли? Аз искам да прочета определени части от него. Възможно ли е това да се случи?

от rodi1i (237 точки)

0
Има всякакви начини да четеш текстови файлове, ако ми трябват определени редове обикновено използвам File.ReadLines("myfile.txt") (което го чете ред по ред без да го зарежда в целия паметта) и си обхождам резултата с foreach и брояч.
Същото нещо можеш да направиш като да си отвориш using (var reader = new StreamReader("myfile.txt")) и да четеш string line = reader.ReadLine() докато не ти върне null, но е повече код.

от staafl (5770 точки)


1
Можеш да си добавиш config или settings file в който да задаваш пътя към файла като стринг и когато искаш да го променяш без да прекомпилираш.

от svetlinpanov (179 точки)


0
Това как точно се случва? Ако имаш някакъв туториал, от който да прочета/изгледам ще съм много благодарен.

от rodi1i (237 точки)


0
От личен опит ти предлагам преди да започнеш с домашните от Text Files, да изгледаш лекцията String and Text Processing. Във следващата тема, има много неща, които значително ще ти олеснят писането на домашното. Като IndexOf(string) и разни такива, за които не се бях сетил докато си пишех домашното от Text Files, a си ги имплементирах сам или нещо подобно на тях, от което няма голям смисъл.

от Hristo.B (3885 точки)