문제

Monotouch iPhone 앱에서 파일을 어떻게 작성하고 작성합니까?

파일은 응용 프로그램 실행 사이에 지속되어야하므로 앱 번들 (문서 또는 리소스) 어딘가에 배치해야한다고 생각합니다.

도움이 되었습니까?

해결책

[메모: 앱 번들이나 iPhone 앱의 샌드 박스 작은 세계의 구조에 대한 귀하의 이해 수준을 알지 못하기 때문에 내 응답은 매우 철저합니다. 이미 알고있는 것들을 다루면 사과합니다. 너무 작게 쓰는 것을 선호합니다. 그리고 약간의 추가 논의 할 때 어떻게...]

물론 몇 가지 옵션이 있습니다. 나는 당신이 이미 .NET에 어느 정도 익숙하다고 가정하고 당신의 질문은 이것을 iPhone 방식으로 수행하는 방법에 관한 것입니다.

모든 iPhone 앱 (그리고 OS X의 앱에 대해 동일한 것을 볼 수 있습니다)은 전통적인 의미에서 실행 가능하지 않은 "번들"이며 실제로 앱 바이너리가 살아있는 폴더 계층 구조입니다 (리소스와 함께 폴더 계층) , 설정 등).

Uber-Sandboxed iPhone 앱의 방식으로 인해 데스크톱 개발을 수행 할 때 일반적으로 사용할 수있는 공유 폴더에 액세스 할 수 없습니다 (예 : 사용자의 홈 폴더 아래에있는 일반적인 문서 폴더가 있습니다. 액세스가있는 응용 프로그램).

대신, 앱에는 일반적으로 앱에서 공유되는 자체 개인 폴더 세트와 같은 자체 폴더 계층 구조가 있습니다.

앱의 폴더 구조가 전화에서 어떻게 보이는지 확인하는 가장 쉬운 방법은 iPhone 시뮬레이터가 앱 설치, 설정, Blah Blah Blah에 사용하는 폴더를 보는 것입니다. 내 컴퓨터에서 (이것이 구성 가능하지만 시스템에서 동일 할 것인지 기억하지 못합니다)이 경로를 통해 폴더로 이동할 수 있습니다.

~/Library/Application Support/iPhone Simulator

그 안에는 시뮬레이터에 설치 한 앱이 포함 된 사용자/응용 프로그램 폴더가 있습니다. 해당 폴더 중 하나에 드릴 다운하면 앱이 휴대 전화에서 액세스 할 수있는 폴더 구조를 볼 수 있습니다.

앱 세션에서 유지하려는 파일을 저장하려면 앱의 문서 폴더가 그 자리입니다. 파일을 만드는 유일한 선택은 아니지만 오른쪽 이 직업을위한 선택. 파일을 올바르게 저장하는 것 외에도 문서 폴더에 보관하면 사용자가 동기화 될 때 iTunes가 백업 할 수 있습니다.

monotouch를 사용하면 앱의 문서 폴더 경로를 Environment.GetFolderPath(Environment.SpecialFolder.Personal);

테스트하려면 테스트하려면 앱의 문서 폴더에 "out.txt"라는 파일을 작성하는 매우 간단한 코드입니다. 이 코드는 또한 파일의 내용을 읽으려면 생성되었음을 보여줍니다. 추가 확인을 위해 시뮬레이터의 응용 프로그램 폴더로 이동하여 수정 된 날짜에 앱 폴더를 정렬하고 가장 최근에 수정 된 날짜로 앱 폴더를 정렬하고 문서 내부를 살펴보십시오. 폴더-"out.txt"를 찾을 수 있습니다 (앱이 설치 될 때 앱의 폴더를 찾을 수 없습니다. 앱이 설치되면 "2B3CA854-FADB-4DDC-9732-0E61B3D8D8C와 같은 이름으로 폴더 내부에 채워질 수 있습니다. " - 수정 된 날짜에 폴더를 정렬하면 가장 최근에 수정 된 앱을 가리 킵니다.이 경우 앱이 다음 코드가 포함 된 모든 것입니다.

// For this to function, don't forget "using System.IO;"

// If you're just playing around with this to see it work, place it inside
// your AppDelegate's "FinishedLaunching" method in main.cs

string path = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
string filePath = Path.Combine(path, "out.txt");

// File.WriteAllText will create a file and then write text to it. If the
// file already exists, File.WriteAllText will overwrite it.
File.WriteAllText(filePath, "Howdy, world.");

// Now we prove it worked by reading the contents of the file and then
// printing them to the console...   
string text = File.ReadAllText(filePath);
Console.WriteLine(text);

따라서 여기에서 실제로 iPhone에 따른 유일한 것은 "Environment.specialfolder.personal"이 앱의 문서 폴더에 맵핑된다는 것을 아는 것입니다. 그 외에도 평소와 같이 .NET입니다.

그리고 다시, 이것은 아마도 과도했을 것입니다. 그러나 나는 그것을 보는 모든 사람들에게 충분히 철저하게 대답하고 싶었습니다. 이것이 도움이되기를 바랍니다. :)

다른 팁

Xamarin.ios 가이드 사이트에서 다음과 같은 방법에는 파일을 저장할 위치에 대한 몇 가지 포인터가 있습니다.

http://docs.xamarin.com/guides/ios/application_fundamentals/working_with_the_file_system/

런타임에 이와 같은 일을 할 수 있습니다.

using (StreamWriter writer = new StreamWriter (Path.Combine (Environment.SpecialFolders.Documents, "yourfilename.ext"))) { }

그리고 그것은 파일을 만들 것입니다. 읽기 위해 그것을 열려면 같은 것을 사용하십시오 Path.Combine() 하지만 함께 스트림 리더.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top