سؤال

أريد إنشاء ملف ini لتخزين بعض إعدادات التطبيق الخاص بي.هل هي فكرة جيدة أن تجد فيها جرة الملف وخلق ini هناك ؟ إذا كان الجواب نعم, ثم كيف يمكنني العثور على موقع جرة الملف ؟

ولكن إذا كنت تعرف أفضل حل عن شيء مثل هذا, أود أن أسمع بعض منهم.

تحرير:انا استخدم ماك و أريد تشغيل نفس التطبيق في نظام التشغيل windows.يمكنني أن أكتب شيئا في هذا النظام.getProperty("المستخدم.الصفحة الرئيسية") الدليل, ولكن أريد أن تبقي على نظام نظيفة ، إذا قرر المستخدم إزالة التطبيق.ليس هناك أفضل طريقة لتخزين إعدادات الملف ، على سبيل المثال في نفس الدليل مع التطبيق ؟

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

المحلول

ويمكنك تحديد موقع دليل التطبيق باستخدام ClassLoader. انظر: جافا: العثور على دليل التطبيق . بدلا من .INI ملف، استخدم .properties ملف - يمكنك تحميل وحفظ هذا عبر في الطبقة خصائص .

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

وأنت قد لا تزال ترغب في تحميل بعض الإعدادات من دليل التطبيق - الإعدادات الافتراضية ربما قام المسؤول بتكوين هناك

وهناك اتفاقية مشتركة هي لانقاذ إعدادات المستخدم إلى الدليل الرئيسي للمستخدم:

/home/user/.eclipse
C:\Documents and Settings\User\.eclipse

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

public static File getSettingsDirectory() {
    String userHome = System.getProperty("user.home");
    if(userHome == null) {
        throw new IllegalStateException("user.home==null");
    }
    File home = new File(userHome);
    File settingsDirectory = new File(home, ".myappdir");
    if(!settingsDirectory.exists()) {
        if(!settingsDirectory.mkdir()) {
            throw new IllegalStateException(settingsDirectory.toString());
        }
    }
    return settingsDirectory;
}

في أنظمة التشغيل يونيكس تشبه، بدءا اسم الدليل بنقطة ( ".myappdir") سيجعل الدليل خفية. على ويندوز، وسوف يكون موجودا تحت المستندات ، لذلك لن يرى المستخدمون الدليل ما لم تذهب تبحث عن ذلك.

نصائح أخرى

إذا تتم كتابة الإعدادات فقط قبل التطبيق الخاص بك (بدلا من تحريرها يدويا)، النظر في استخدام في تفضيلات API .

ويجب أن لا يكون تخزين الملفات المؤقتة في دليل التثبيت من تطبيق. تذكر، يمكن للمستخدم تشغيل التطبيق قد لا يكون وصول الكتابة إلى هذا الدليل. المكان الأكثر أمانا لوضع أشياء من هذا القبيل هو في C: \ الوثائق وإعدادات \ اسم المستخدم \ مجلد بيانات التطبيق \ اسم التطبيق (تعديل اسم الضرورة)

وقال ذلك، إلا أنني ربما تخزين هذا النوع من الاشياء في التسجيل بدلا من ملف على جهاز الكمبيوتر الخاص بهم. (ولكن هذا مجرد لي.)

عادة جافا المبرمجين لا تستخدم .ملفات ini ، ولكن .خصائص الملفات (شكل مختلف).يمكنك استخدام جافا.لانغ.خصائص الفئة لطيفة برنامجي المجمع إذا كنت تفعل.

بينما كنت يمكن الحصول على الموقع الخاص بك ملف jar عن طريق الاتصال getProtectionDomain().getCodeSource().getLocation() على الفئة .فئة الأعضاء أنا لا نوصي أن يمكنك القيام بذلك.

وأود أن بدلا من ذلك كتابة الملفات إلى النظام.getProperty("المستخدم.الصفحة الرئيسية") دليل المستخدمين الدليل الرئيسي ، أو إذا كان هو حقا المؤقت النظام.getProperty("جافا.io.tmpdir")

هذا يعتمد على ini الخاص بك يحتاج إلى أن يكون الإنسان للقراءة/للكتابة في ظل الظروف العادية.إن لم يكن, يمكنك استخدام خصائص الملف بدلا من ini وتخزينها في "المستخدم" الدليل.

أما بالنسبة العثور على ملف jar, سيكون لديك للعثور على ClassLoader لفئة معروفة ليتم تحميلها من الجرة ، والتحقق من أنه كان النوع المناسب من ClassLoader (أي أنه حقا تم تحميلها من جرة), و يمكنك استخراج المسار من ذلك.أنا ربما يمكن انتشال البرمجية للقيام بذلك إذا كان هذا هو حقا ما تريد.أنا لا أوصي هذا.

تحرير المستخدم.المنزل العقارات سوف تعطيك دليل المستخدم التي يمكنك استخدامها بأمان.

وهذه الفكرة مع .properties ملف بدلا من ملف INI أمر جيد. أيضا، إذا قمت بتخزين بعض البيانات الحساسة في هناك، قد تنظر تشفيرها. التحقق من ذلك:

https://www.owasp.org/index.php/How_to_encrypt_a_properties_file

وأو هذا:

تشفير وفك تشفير قيمة ملف الممتلكات في جافا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top