2013-02-19 5 views
0

네이티브 C++에서 Windows Phone 8 응용 프로그램을 개발할 때 파일에서 읽고 파일에 쓰려고합니다. 파일을 읽기 위해 Windows Phone 8 fstream

내가 사용 perfeclty 잘 작동

ifstream inputFile; 
inputFile.open(fileName); 

string text; 
while(!inputFile.eof()) 
{ 
    string line; 
    getline(inputFile, line); 
    text += line; 
} 

합니다. 그러나 파일을 쓰는 것은 내가 시도한 것에 상관없이 작동하지 않습니다. 예 :

ofstream outputFile; 
outputFile.open("test.txt", ios::out); 
outputFile << "asd" << endl; 
outputFile.close(); 

이 파일도 생성하지 않습니다. 입력을 읽기 위해 사용한 것과 동일한 파일을 사용하려고해도 입력이 작동하지 않습니다. 빈 파일을 만들고 그 파일을 사용하려고했지만 성공하지 못했습니다.

누구나 내가 뭘 잘못하고 있는지 아이디어가 있습니까?

+2

첫 번째로'ofstream outputFile ("test.txt", ios :: out);을 할 수 있습니다. "왜 모든 사람들이'.open'을 먼저 사용하는 것일지 모르겠다. 명시 적으로 닫을 필요는 없다. RAII보세요. 둘째, 현재있는 디렉토리에 쓸 수있는 권한이 있습니까? – 111111

+0

실제로, 디렉토리 속성을 검사하면 "readonly"가 선택됩니다! 그러나 그것은 내가 그것을 선택하지 못하게하지 않을 것이다. 이 파일 하나에 쓰기 권한을 부여하려면 어떻게해야합니까? – Hannes

+0

Windows 전화에 대한 단서가 없습니다. 보안상의 이유로 사용자가 데이터를 저장해야하는 위치를 찾지 못할 수도 있습니다. – 111111

답변

3

앱 설치의 일부로 휴대 전화에 배포 된 모든 파일을 읽을 수 있지만이 파일의 절대 경로를 검색해야합니다.

C에서

++ (실제로 C++/CX 확장)를 사용하여 응용 프로그램의 설치 위치를 찾아 볼 수 있습니다 :

auto appInstallDirectory = Windows::ApplicationModel::Package::Current->InstalledLocation->Path; 

또한 윈도우 폰에서 응용 프로그램의 로컬 폴더에 읽기/쓰기 할 수 있습니다. 다음을 사용하여이 위치를 찾을 수 있습니다.

Platform::String^ localfolder = Windows::Storage::ApplicationData::Current->LocalFolder->Path; 

이 위치 외부의 파일을 읽거나 쓸 수 없습니다.

+0

나는 당신이 나를 잘못 생각했다고 생각합니다. 이 특별한 경우 나는이 파일을 전화 상에 쓰고 싶지는 않지만 테스트 목적으로 프로젝트 폴더에 있습니다. 상황을 단순화합니까? – Hannes

+0

아하나.하지만 문제는 매우 비슷합니다. 프로젝트 파일에서 전화 파일 시스템에 설치된 파일의 위치를 ​​찾아야합니다. –

+0

내 루트 디렉토리에있는 파일을 만들 수 있기 때문에 그 위치가 문제라고 생각하지 않습니다. 내 루트 디렉토리에서 읽고 fstream으로 읽어 들일 수 있습니다. 그러나이 똑같은 파일에 쓰기를 시도하면 작동하지 않습니다. 정말 내 쓰기 액세스에 문제가있는 것 같습니다. 모든 폴더의 속성을 확인하면 읽기 전용으로 표시되며 변경할 수 없습니다. – Hannes