الحصول على لاغري عند قراءة ملف نصي في جافا باستخدام قارئ مخزنة

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

سؤال

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

الملف بالتأكيد في الدليل الذي حددته نظرًا لأن الطريقة المضمنة موجودة بشكل صحيح عندما أتحقق منه باستخدام هذا واحد:

if(ofile.exists()==true){
System.out.println("exist");
}else{
System.out.println("not exist");
}

من فضلك أحتاج إلى مساعدة ، وتحديد الخطأ وراء ذلك ، لماذا يعود فارغًا.

public static void main(String args[]){

    String[] eq=new String[50];
    String[]ea=new String[50];
    String[]eb=new String[50];
    String[] ec=new String[50];
    String[]ed=new String[50];
    char[] ans=new char[50];
    String strtemp;
    File ofile= new File("J:\\questions.txt");
    BufferedInputStream bis= null;
    FileInputStream fis= null;
    DataInputStream dis=null;




    int ii=0;
    int score=0;



    System.out.println(eq[1] + "\n" + ea[1] + "\n" + eb[1] + "\n" + ec[1] + "\n" + ed[1] + "\n" + "\n" + "Answer: ");
    String strans=x.nextLine();
    char y=strans.charAt(0);
    if(y==ans[1]){
    score++;
    }else{

    }


    try{
    fis=new FileInputStream(ofile);
    bis=new BufferedInputStream(fis);
    dis=new DataInputStream(bis);

    while(dis.available()!=0){

    eq[1]=dis.readLine(); ea[1]=dis.readLine(); 
    eb[1]=dis.readLine(); ec[1]=dis.readLine();
    ed[1]=dis.readLine(); strtemp=dis.readLine();
    ans[1]=strtemp.charAt(0); 

    }

    bis.close();
    dis.close();
    fis.close();


    }catch(FileNotFoundException e){
    e.printStackTrace();
    }catch(IOException e){
    e.printStackTrace();

    }


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

المحلول

إليك كيفية قراءة ملف نصي في Java باستخدام BufferedReader:

    BufferedReader reader = null;
    try {
        reader = new BufferedReader( new FileReader( "J:\\questions.txt") );
        String line = null;
        do {
            line = reader.readLine();
            if( line != null ) {
                // Do Something with line                
            }
        } while( line != null );
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if( reader != null )
            try {
                reader.close();
            } catch (IOException e) {
            }
    }

نصائح أخرى

أعتقد أن لدي مشكلة مماثلة. بقدر ما أستطيع أن أقول dis.available إرجاع 0 حتى لو كان هناك نص للقراءة. حاول قراءة شيء ما في المخزن المؤقت.

تم وصف "متاح" في Javadoc كما

int Available () إرجاع تقدير لعدد البايتات التي يمكن قراءتها (أو تخطيها) من دفق الإدخال هذا دون الحظر من خلال الاحتجاج التالي لطريقة دفق الإدخال هذا.

سيكون في البداية 0 لأنك لم تقرأ منه بعد. لا تستخدم available لهذا.

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