9

Tak więc piszę przenośną bibliotekę klas, która jest skierowana na .NET 4.5, Windows 8 i Windows Phone 8. Próbuję odczytać z pliku tekstowego, który jest częścią projektu, jako zawartość kompilacji. Widzę, że StreamReader jest dostępny w PCL, ale nie mogę się dowiedzieć, jak pobrać strumień z pliku, biorąc pod uwagę ścieżkę do pliku. Gdyby ktoś mógł wskazać mi odpowiednie struktury, byłbym wdzięczny. Również, jeśli możesz podać kierunek dla plików XML. Teraz czytam tylko pliki tekstowe, ale później będę pracował w XML. Dzięki!C# PCL odczyt z pliku

+0

czy możesz przekazać StreamReaderowi strumień? wtedy pytanie brzmi "otwarcie pliku", co powinno być w porządku, nie? To samo działałoby dobrze dla większości interfejsów XML API –

+0

Mam ciąg znaków, który jest ścieżką do pliku, ale StreamReader pobiera strumień (oczywiście). Pytam, jak w PCL zmieniasz ścieżkę w strumień. –

+0

Jeśli istnieje możliwość zmiany akcji kompilacji pliku na Embedded Resource, możesz użyć metody podanej w pierwszej odpowiedzi [tutaj] (http://stackoverflow.com/questions/10963781/how-to-reada-a- biblioteka zasobów-wewnątrz-przenośnych-klasy). –

Odpowiedz

9

Przenośne biblioteki klas umożliwiają pracę z przestrzeniami nazw i klasami istniejącymi na wszystkich platformach, na które kierujesz reklamy.
.Net 4.5 (zakładając, że masz na myśli pełny pulpit-WinForm/WPF), Windows 8 i Windows Phone 8, wszystkie mają bardzo różny dostęp do plików i mają do nich dostęp różne pliki. Gdzie dostęp do plików jest również bardzo różny: zawartość osadzona; zasoby osadzone; izolowane przechowywanie; udostępnione foldery; pełny system plików. Nie wszystkie są dostępne na wszystkich platformach, o których wspominasz.

Krótka odpowiedź. Prawdopodobnie nie możesz zrobić tego, o co prosisz.

Dostęp do systemu plików jest bardzo różny na różnych platformach i zwykle musi być wykonywany inaczej dla każdej platformy.
To, co możesz zrobić, to zdefiniować interfejs dostępu do plików (otwórz, odczytaj, zapisz itp.), Którego twój PCL może użyć, a następnie utwórz instancje platformy, które w razie potrzeby przekażesz do PCL.

+1

Dzięki, miałem nadzieję, że w tak konstruktorze wysokiego poziomu jak .NET nie byłby to problem. Ale całkowicie rozumiem skąd pochodzi ograniczenie. No cóż, na interfejsy! Dzięki jeszcze raz. –

9

Matt ma rację.

Istnieją jednak wtyczki umożliwiające dostęp do plików z PCL.

Moja biblioteka, MvvmCross zapewnia jeden - https://github.com/slodge/MvvmCross/tree/vnext/Cirrious/Plugins/File

jednak ... za to, co aktualnie robi myślę najlepiej jest @ Portable biblioteki przechowywania plików dsplaisted - jest to dostępne za pośrednictwem Nuget - http://nuget.org/packages/pclstorage - to jest napisane przez jednego z zespołu PCL firmy Microsoft - i dobrze nadaje się do zamieniania ścieżki w strumienie w PCLs

+0

MvvmCross jest niesamowity! To sprawia, że ​​platforma krzyżowa jest znacznie łatwiejsza! – Telavian