عادةً، ماذا يعني عندما تقوم Java بإرجاع "المعلمة غير صحيحة"

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

  •  05-07-2019
  •  | 
  •  

سؤال

أنا أقوم بإنشاء ملف مثل ذلك

try {
    File file = new File(workingDir, obj.getName() + ".xls");
    outputStream = new FileOutputStream(file);
} catch (FileNotFoundException ex) {
    ex.printStackTrace();
}

وأنا أحصل على

java.io.FileNotFoundException: ..\a\relative\path\obj_name.xls (The parameter is incorrect)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)

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


تحديث

تم التحقق من وجود الملف الذي يحاول دفق الإخراج الكتابة إليه.تم التحقق أيضًا من أن الملف قابل للكتابة.بعد الكثير من الضجة، قمت بإزالة المسار الفعلي وقمت للتو بإدخال اسم الملف (غير مرغوب فيه) وقد نجح الأمر.إذن فالمسألة لها علاقة بالمسار.هل أحتاج إلى الهروب من الشخصيات الموجودة في المسار؟

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

المحلول

هذا يبدو وكأنه تم الإبلاغ عن خطأ على أجهزة ويندوز.

في المواقف العادية، قد يتسبب شيء مثل المسار الذي يحتوي على نقطتين (:) والذي لا يشير إلى حرف محرك الأقراص في ظهور هذه الرسالة.

نصائح أخرى

يبدو أن هناك مشكلة في المسار الذي تستخدمه.حاول استخدام file.getPath() قبل فتحه لتصحيح ما يحدث في المسار الخاص بك.

File file = new File(workingDir, obj.getName() + ".xls");
System.out.println("Path="+file.getPath());
outputStream = new FileOutputStream(file);

إذا كان "workingDir" الخاص بك عبارة عن مسار نسبي، فهل أنت متأكد من أنك على "الدليل الحالي" الصحيح عندما قمت بنقل تطبيقك من نظام التشغيل Unix إلى Windows؟ربما يجب عليك التحقق من الدليل الحالي للتطبيق قيد التشغيل.

ربما لا يتمتع التطبيق بحق الوصول الصحيح للكتابة إلى الملف؟هل هي للقراءة فقط أم محمية بطريقة أخرى؟

FileOutputStream.open() هي طريقة أصلية، وأفترض أن أي نوع من رسائل الاستثناء مثل "المعلمة غير صحيحة" يأتي من نظام التشغيل الأساسي.

بالمناسبة: ال File لا يستدعي المنشئ FileOutputStream.open(), ، فهل الاستثناء لا يأتي فعليًا من الكود الذي نشرته هنا؟

ربما يكون ذلك بسبب الخطوط المائلة العكسية في المسار؟المسار طويل جدا؟اسم الملف غير صالح لهذا الخطأ (أحرف خاصة...)؟

قد أكون مخطئًا تمامًا، ولكن الأمر يستحق المحاولة لأنه يبدو وكأنه خطأ يعتمد على نظام التشغيل.

تأكد من أن المستخدم الذي يقوم بتشغيل عملية JVM لديه الأذونات الصحيحة للوصول إلى هذا الملف.

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