9

그래서 .NET 4.5, Windows 8 및 Windows Phone 8을 대상으로하는 이식 가능한 클래스 라이브러리를 작성하고 있습니다. 프로젝트의 일부인 텍스트 파일에서 빌드 내용을 읽으려고합니다. StreamReader는 PCL에서 사용할 수 있지만 파일 경로가 주어지면 파일에서 스트림을 가져 오는 방법을 찾지 못하는 것 같습니다. 누구든지 올바른 구조를 가르쳐 주면 고맙겠습니다. 또한 XML 파일의 방향을 제시 할 수 있다면. 지금은 텍스트 파일을 읽는 중이지만 나중에 XML로 작업 할 것입니다. 감사!C# PCL 파일 읽기

+0

StreamReader에 스트림을 제공 할 수 있습니까? 질문은 단지 "파일을 여는 것"입니다. 어느 쪽이 좋을까요? 대부분의 XML API에도 똑같이 적용됩니다. –

+0

파일 경로 인 문자열이 있지만 StreamReader는 스트림을 가져옵니다 (분명히). PCL에서 경로를 스트림으로 바꾸는 방법을 묻습니다. –

+0

파일의 빌드 작업을 포함 리소스로 변경할 수있는 경우 첫 번째 대답 [here] (http://stackoverflow.com/questions/10963781/how-to-read-a-)에 제시된 방법을 사용할 수 있습니다. 휴대용 파일 시스템 내의 리소스 파일). –

답변

9

포터블 클래스 라이브러리를 사용하면 타겟팅하는 모든 플랫폼에 존재하는 네임 스페이스 및 클래스를 사용하여 작업 할 수 있습니다.
.Net 4.5 (전체 데스크톱 -WinForms/WPF를 의미한다고 가정), Windows 8 및 Windows Phone 8은 모두 파일 액세스를 매우 다르게하며 다른 파일을 사용할 수 있습니다. 파일이 액세스 할 수있는 위치도 크게 다릅니다. 임베디드 리소스; 격리 된 저장소; 공유 폴더; 전체 파일 시스템 이러한 모든 플랫폼에서 사용할 수있는 것은 아닙니다.

짧은 답변. 당신은 아마 당신이 한 일을 할 수 없을 것입니다.

파일 시스템 액세스는 플랫폼에 따라 크게 다르며 일반적으로 각 플랫폼마다 다르게 수행해야합니다.
PCL이 사용할 수있는 파일 액세스 (열기, 읽기, 저장 등)를위한 인터페이스를 정의한 다음 필요에 따라 PCL에 전달하는 플랫폼 특정 인스턴스를 생성 할 수 있습니다.

+1

감사합니다. .NET과 같은 높은 수준의 구조에서이 문제가 발생하지 않았 으면합니다. 그러나 나는 한계가 어디서 왔는지 완전히 이해하고있다. 오, 잘 인터페이스에! 다시 한번 감사드립니다. –

9

매트가 맞습니다.

그러나 PCL에서 파일에 액세스 할 수있는 플러그인이 있습니다. 내가 가장 좋은 건 생각 당신이 현재하고있는 대한 그러나 https://github.com/slodge/MvvmCross/tree/vnext/Cirrious/Plugins/File

...의 dsplaisted 휴대용 파일 저장 라이브러리 @ - - http://nuget.org/packages/pclstorage - -이 Nuget를 통해 볼 수 있습니다

내 도서관, MvvmCross 하나가 제공하는이 작성 Microsoft의 PCL 팀 중 한 사람이 작성했습니다. PCL의 경로를 스트림으로 변환하는 데 적합합니다.

+0

MvvmCross는 멋지다! 그것은 크로스 플랫폼을 훨씬 쉽게 만듭니다! – Telavian