Odczyt pliku tekstowego z resource

0

Witam

Piszę aplikację w C#, mam gotowy projekt brakuje mi tylko odczytywanie ścieżki do pliku. Mam plik który znajduje się w dodanych Resource, w pliku mam dane które odczytuje. Jako że moja aplikacja może być instalowana na różnych dyskach więc stwierdziłem że to będzie najlepszy sposób na tworzenie ścieżki dynamicznej do pliku.

Plik wywołuje w taki sposób:

string[] linie = File.ReadAllLines(@""+testMenu.Properties.Resources.haslo.ToString()+"");

lub

string[] linie = File.ReadAllLines(@""+testMenu.Properties.Resources.haslo+"");

Niestety wyskakuje mi następujący błąd:
Nie można odnaleźć pliku 'C:\Users\Dawid\Documents\Visual Studio 2012\Projects\testMenu\testMenu\bin\Debug\System.Byte[]'.

Nie wiem jak to zrobić, podając bezpośrednią ścieżkę wszystko funkcjonuje normalnie proszę o pomoc.
Pozdrawiam

0

tak wystarczy:

string strString= Properties.Resources.Plik;

string[] strString2 = File.ReadAllLines(Properties.Resources.Plik);

0

Zrobiłem tak jak proponowałeś ale wyskakuje błąd

Niedozwolone znaki w ścieżce

A cała fragment kodu wygląda następująco:

            string strString = Properties.Resources.haslo;

            string[] strString2 = File.ReadAllLines(strString);
            adresIP = strString2[0];
            uzytkownik = strString2[1];
            haslo = strString2[2];
            bazaDanych = strString2[3];
            port = strString2[4];
            kodowanieZnakow = strString2[5];
0

nie zrobiłeś tak jak proponowałem

0

Masz racje, przepraszam. Zmieniłem tak jak proponowałeś ale błąd ten sam.

            string strString = Properties.Resources.haslo;

            string[] strString2 = File.ReadAllLines(Properties.Resources.haslo);

            adresIP = strString2[0];
            uzytkownik = strString2[1];
            haslo = strString2[2];
            bazaDanych = strString2[3];
            port = strString2[4];
            kodowanieZnakow = strString2[5];
0

no to spróbuj tak

string test = Properties.Resources.test;
string[] test2 = test.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

/wydawało mi się że ReadAllLines nie działa tylko ze ścieżką. nie sprawdziłem. przepraszam.

Chociaż lepiej by chyba było i tak użyć xml.

0

Teraz już działa dziękuję za pomoc

0

Przepraszam jeszcze, miałbyś jakiś pomysł jak by zrobić odczytywanie pliku ale np. haslo.zaq bo jeżeli zmienię format to wyświetla się że nie można zmienić byte[] na string []

0

byte[] na string zamień np tak:

string test = System.Text.Encoding.UTF8.GetString(/*byte[]*/);
0

Wszystko działa jak należy ale niestety nie osiągnąłem efektu zamierzonego.

Mam program który bazuje na bazie danych, aby ułatwić zmianę danych bazy danych dostałem polecenie zapisania hasła, adresów ip, itp. do pliku i później jeżeli zajdzie potrzeba zmiany np. hasła inny program zmienia tylko ten plik. Problem polega na tym że robiąc tą metodą co wcześniej po kompilacji programu nie ma tego pliku w osobnym folderze.

Nie wiem jak ten problem rozwiązać.
Czy mógłby mi ktoś pomóc?

0

Z tego co pamiętam, we właściwościach pliku w Resources są opcję typu: dołącz do pliku, kopiuj (jakoś tak). Sprawdź to. Ewentualnie zrób tak, że jeśli nie ma pliku przy uruchamianiu .exe to utwórz nowy plik (skopiuj to co masz w Resources), a później wczytuj go. Możesz użyć np

File.ReadAllLines(Application.StartupPath + "\\TwojPplik.txt");
0

http://stackoverflow.com/a/12122332 A spróbuj tak jak tutaj w odpowiedzi, tj. tworzysz nowy obiekt URI i na nim operujesz...

0

niestety nie wiem jak to zrobić

Potrzebuję zrobić coś takiego że mamy program po kompilacji a w jego folderze instalacyjnym jest dodatkowy plik np. pass.config lub pass.txt z którego będzie program pobierał sobie dane. Do tej pory niestety nie udało mi się to zrobić. Proszę o pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1