Получайте нуль при чтении текстового файла в Java с помощью буферизованного считывания

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

Вопрос

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

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

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

Пожалуйста, мне нужна помощь, определяя ошибку за этим, почему он возвращает NULL.

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 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 доступно () Возвращает оценку количества байтов, которые могут быть прочитаны (или пропущены) от этого входного потока, не блокируя следующим вызовом способа для этого входного потока.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top