سؤال

أحاول تهيئة كائن fileinputstream باستخدام كائن ملف. أحصل على خطأ filenotfound على الخط

fis = new FileInputStream(file);

هذا غريب منذ أن فتحت هذا الملف من خلال نفس الطريقة للقيام به Regex عدة مرات.

طريقةي هي كما يلي:

private BufferedInputStream fileToBIS(File file){

    FileInputStream fis = null;
    BufferedInputStream bis =null; 
    try {
        fis = new FileInputStream(file);
        bis = new BufferedInputStream(fis);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }   
    return bis;
}

java.io.filenotfoundexception: c: dev server tomcat6 webapps sample-site (تم رفض الوصول)
at java.io.fileinputstream.open (الطريقة الأصلية)
في java.io.fileinputstream. (مصدر غير معروف)
في java.io.fileinputstream. (مصدر غير معروف)
في Controller.scaneditregions.filetobis (Scaneditregions.java: 52)
في Controller.scaneditregions.tidyhtml (Scaneditregions.java: 38)
في Controller.scaneditegions.process (Scaneditregions.java: 64)
في Controller.scaneditregions.visitalldirsandfiles (Scaneditregions.java: 148)
في Controller.manager.main (Manager.java: 10)

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

المحلول

اذا حكمنا من قبل StackTrace التي قمت بلصقها في مشاركتكم أعتقد أنك لا تملك حقوق قراءة الملف.

تتيح لك فئة الملفات إجراء فحص مفيد في ملف، بعضها:

boolean canExecute();
boolean canRead();
boolean canWrite();
boolean exists();
boolean isFile();
boolean isDirectory();

على سبيل المثال، يمكنك التحقق من: موجود () && isfile () && canread () وطباعة رسالة خطأ أفضل اعتمادا على السبب وراء قراءة الملف.

نصائح أخرى

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

قد ترغب في التأكد من ذلك (من أجل الغطاء المحتمل):

  1. هذا الملف موجود.
  2. الملف ليس دليلا.
  3. لديك أو عملية Java لها أذونات لفتح الملف.
  4. لا تحتوي عملية أخرى على قفل على الملف (من المحتمل أن تتلقى IOException القياسي بدلا من filenotfoundException)

أعتقد أنك تقوم بتنفيذ البيان من Eclipse أو أي ملف Java IDE والملف المستهدف موجود أيضا في مساحة عمل IDE. يمكنك الحصول على الخطأ كما eclipse غير قادر على قراءة الملف الهدف في مساحة العمل نفسها. يمكنك تشغيل التعليمات البرمجية الخاصة بك من موجه الأوامر. لا ينبغي من خلال أي استثناء.

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