私は、外部アプリケーションがそれを読むことができるファイルを書きたいと思っていますが、私はIsolatedStorageの利点もいくつか望みます。もらってもいい?IsolatedStorageファイルのパスを取得して外部アプリケーションから読み取ることはできますか?
15
A
答えて
23
リフレクションを使用してIsolatedStorageFileStream
クラスのプライベートフィールドにアクセスすることで、ディスク上の隔離されたストレージファイルのパスを取得できます。ここに例があります:
// Create a file in isolated storage.
IsolatedStorageFile store = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null);
IsolatedStorageFileStream stream = new IsolatedStorageFileStream("test.txt", FileMode.Create, store);
StreamWriter writer = new StreamWriter(stream);
writer.WriteLine("Hello");
writer.Close();
stream.Close();
// Retrieve the actual path of the file using reflection.
string path = stream.GetType().GetField("m_FullPath", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(stream).ToString();
私はそれが推奨された方法です。
ディスク上の場所はオペレーティングシステムのバージョンによって異なり、他のアプリケーションにその場所にアクセスする権限があることを確認する必要があることに注意してください。
6
代わりの一時ファイルを作成し、それを直接ストアからのパスを取得することができ場所を取得:
var path = store.GetType().GetField("m_RootDir", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(store).ToString();
8
を私がするFileStreamのNameプロパティを使用します。
private static string GetAbsolutePath(string filename)
{
IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();
string absoulutePath = null;
if (isoStore.FileExists(filename))
{
IsolatedStorageFileStream output = new IsolatedStorageFileStream(filename, FileMode.Open, isoStore);
absoulutePath = output.Name;
output.Close();
output = null;
}
return absoulutePath;
}
このコードはWindows Phone 8 SDKでテストされています。
+1
「デスクトップ」.Net 4.5では、名前は「不明」です。 – habakuk
関連する問題
- 1. プロジェクトのweb.configを外部アセンブリで読み取ることはできますか?
- 2. iOSアプリケーションから外部バンドルを読み込むことはできますか?
- 3. 外部のファイルからhtmlコンテンツを取得できますか?
- 4. 外部のjavascriptファイルがjsonファイルとして読み取られています
- 5. Cのファイルから定数を読み取ることはできますか?
- 6. ファイルからgetcでアンダースコアを読み取ることはできますか?
- 7. cfgファイルから変数を読み取ることはできますか?
- 8. PHPはPowerPointファイルからテキストを読み取ることができますか?
- 9. O/R BrokerにJARファイルの内部からSQL文を読み取らせることはできますか?
- 10. 外部Excelファイルからデータを読み取る
- 11. Jarから外部ファイルを読み取る
- 12. 外部テーブルからExcelファイルを読み取る
- 13. USB外部ストレージからファイルを読み取る
- 14. iOS外部アクセサリからファイルを読み取る
- 15. サーブレットから外部ファイルを読み取る
- 16. 要素のテキストコンテンツをDOMから読み取らずにAngularで読み取ることはできますか?
- 17. エミュレータの外部ストレージからファイルを読み取ることができません
- 18. javascriptを使用してパスから直接Excelファイルを読み取ることができません
- 19. 外部から読み込まれたswfからローダーの子を取得
- 20. Springバッチを使用して外部Oracle DBからデータを読み取ることができません
- 21. 外部ctpファイルからブロックを取得
- 22. Apache POIを使用してExcelファイルを読み取ることができない - 例外を取得する
- 23. アトムフィードはwso2esbから読み取ることができます
- 24. 角度jsを使用してjsonファイルから外部URLを読み取る
- 25. 別の環境でSwingのパスからファイルを読み取る
- 26. Linuxサーバーからgeolitecityファイルのパスを読み取る方法は?
- 27. 外部ページを読み込むことはできますか?
- 28. BigQueryで外部テーブルのファイル名を取得できますか?
- 29. jacoco mavenプラグインはファイルから除外を読み取ることができますか?
- 30. Azureファイル共有からファイルを読み取ることができません
少なくともSilverlight 4では、このリフレクションを実行しようとすると... mscorlib.dllで 'System.FieldAccessException'型の最初のチャンス例外が発生しました 追加情報:メソッド 'Comms.MainPage.LayoutRoot_Loaded (System.Object、System.Windows.RoutedEventArgs) 'フィールド' System.IO.IsolatedStorage.IsolatedStorageFile.m_StorePath 'にアクセスできませんでした。また、 "m_FullPath"ではなく "m_StorePath"になりました。それを使用しない理由がさらにあります。 – DJA
@DJAセキュリティ上の理由から、Silverightでリフレクションしてプライベートメンバーを取得できないためです。 – ghord