получить нулевое значение при чтении текстового файла в Java с использованием буферизованного читателя - PullRequest
3 голосов
/ 04 октября 2010

У меня проблема с чтением текстового файла в Java и назначением его в массив. Программа работает, но я получаю нулевое значение. Я попытался изменить код на самый простой для того, что вы видите ниже. Потому что этот должен действительно перебирать текстовый файл. Но я делаю это так, чтобы я мог легко увидеть, в чем проблема. Но проблема в том, что я не знаю, почему он по-прежнему выводит ноль.

Файл, безусловно, находится в указанной мной директории, поскольку встроенный метод существует и возвращает true, когда я проверяю его, используя этот:

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();

    }


    }

Ответы [ 3 ]

4 голосов
/ 04 октября 2010

Вот как вы читаете текстовый файл на Java с помощью BufferedReader:

</p> <pre><code> 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) { } }

4 голосов
/ 04 октября 2010

Я думаю, у меня была похожая проблема.Насколько я мог сказать, dis.available возвращает 0, даже если есть текст для чтения.Попробуйте прочитать что-нибудь в буфере.

2 голосов
/ 04 октября 2010

«доступно» описывается в javadoc как

int доступно () Возвращает оценку количества байтов, которые могут быть прочитаны (или пропущены) из этого входного потока без блокировки при следующем вызове метода для этого входного потока.

Сначала будет 0, потому что вы еще не читали. Не используйте available для этого.

...