هل يمكنني الحصول على مسار لملف المنعزز وقراءته من التطبيقات الخارجية؟

StackOverflow https://stackoverflow.com/questions/1112681

  •  12-09-2019
  •  | 
  •  

سؤال

أريد أن أكتب ملف حيث يمكن أن يقرأه تطبيق خارجي، لكنني أريد أيضا بعض مزايا المنزولات، والتأمين بشكل أساسي ضد استثناءات غير متوقعة. ايمكنني الحصول عليه؟

هل كانت مفيدة؟

المحلول

يمكنك استرداد مسار ملف تخزين معزول على القرص عن طريق الوصول إلى مجال خاص 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();

لست متأكدا من أن هذه ممارسة موصى بها رغم ذلك.

ضع في اعتبارك أن الموقع على القرص يعتمد على إصدار نظام التشغيل وستحتاج إلى التأكد من أن تطبيقك الآخر لديه أذونات الوصول إلى هذا الموقع.

نصائح أخرى

يمكنني استخدام خاصية اسم FileTream.

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.

بدلا من إنشاء ملف TEMP واحصل على الموقع، يمكنك الحصول على المسار من المتجر مباشرة:

var path = store.GetType().GetField("m_RootDir", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(store).ToString();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top