質問

どのように作成し、MonoTouchでiPhoneアプリでファイルに書き込むのでしょうか?

ファイルはので、私はそれがアプリケーションバンドルのどこかに配置する必要があると思います(ドキュメントやリソース?)、アプリケーションが起動間で保持する必要があります。

役に立ちましたか?

解決

[注:私はアプリをバンドルしたり、iPhoneアプリのサンドボックスの小さな世界の構造に関する理解のあなたのレベルを知らないので、私の応答はかなり徹底している - の謝罪私は物事をカバーしている場合、あなたが既に知っています - 私も少しより少し多すぎるを書くために、とのビットを追加することを好む、の理由の議論する際にの方法の...]

あなたは(もちろん)、いくつかのオプションがあります。私はあなたがある程度まで、あなたの質問は、このiPhoneの道を行う方法の詳細であることを.NETにすでに慣れていると仮定しています。

すべてのiPhoneアプリは、(あなたはOS X上でのアプリケーションのために同じものが表示されます)その内部伝統的な意味で実行可能ではない「バンドル」が、実際にはフォルダ階層であるあなたのアプリケーションバイナリの生活(リソース、設定、などと一緒に。)。

ユーバー - サンドボックスのiPhoneアプリがどのように、あなたは、共有フォルダへのアクセス権を持っていないので、デスクトップの開発を行う際に、

あなたは通常、ユーザーの下に住んでいる一般的なドキュメントフォルダ、例えば、ある(使用することができるだろうアプリケーションがアクセス権を持っているにホームフォルダ)。

その代わり、あなたのアプリケーションは、通常のアプリケーション間で共有されるだろうフォルダの自身の個人的なセットのようなものだ、独自のフォルダ階層を持っています。

、アプリケーションのフォルダ構造は、携帯電話はiPhoneシミュレータアプリのために使用するフォルダを見ている上でどのように見えるかを確認する最も簡単な方法は、設定、何とか何とか何とか、インストールされます。私のマシン上で(これは設定可能である場合、私は覚えていませんが、それはおそらくあなたのシステム上で同じです)、あなたはこのパスでフォルダを取得することができます:

~/Library/Application Support/iPhone Simulator

は、その内部では、あなたがシミュレータにインストールしたアプリが含まれているユーザー/ Applicationsフォルダがあります。これらのフォルダのいずれかにドリルダウンして、あなたのアプリが携帯電話上にアクセスする必要がありますフォルダ構造を見ることができます。

あなたはアプリのセッションにわたって持続したいファイルを格納するために、あなたのアプリケーションのドキュメントフォルダは、スポットです。これは、ファイルを作成するための唯一の選択肢ではないが、それがこの仕事のためにの右のの選択です。ときに、ユーザーの同期ファイルが正しく保存されていることに加えて、ドキュメントフォルダにそれらを保つことはまた、それらは、iTunesのでバックアップされます。

MonoTouchででは、あなたがEnvironment.GetFolderPath(Environment.SpecialFolder.Personal);で、アプリのDocumentsフォルダのパスを取得することができます。

あなたはそれをテストしたい場合は、

、このアプリのDocumentsフォルダに「out.txtを」というファイルを作成しますいくつかの非常に簡単なコードです。このコードはまた、それが作成された表示するには、ファイルの内容を読み取り - さらなる検証のために、シミュレータのアプリケーションフォルダに移動し、それらが変更された日付でアプリフォルダを並べ替え、最後に変更をドリルダウンし、そのドキュメント内に見えますフォルダ - あなたは「out.txtを」を見つけることができます(アプリがインストールされている場合、それは「2B3CA854-FADB-4DDC-9732-0E61B3DD8D8Cのような名前のフォルダ内に詰めます、ので、あなたが名前で、アプリのフォルダを見つけることができません" - 彼らはこのような場合には、)次のコードが含まれているものは何でもアプリで、最後に変更アプリ、にあなたを指すようになります変更された日付でフォルダを並べ替えます:

// 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」マップを知っています。それを超えて、それはいつものようにネットです。

そして、再び、これはおそらく行き過ぎだったが、私はそれを見ている皆のために十分に徹底的に応えたかった - このことができます願っています:)

他のヒント

次の操作方法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"))) { }

と、それはファイルを作成します。しかし、のStreamReaderをのと同じPath.Combine()を使用し、読み取りのためにそれを開くには。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top