0

メカニズムをテストするためだけに、本当に単純なテキスト リーダーを作成しましたが、何も返されず、何もわかりません! 私はJavaの経験があまりないので、おそらく非常に単純でばかげた間違いです! コードは次のとおりです。

クラス1

import java.io.IOException;

public class display {


public static void main(String[] args)throws IOException {

    String path = "C:/Test.txt";
    try{
    read ro = new read(path);
    String[] fileData = ro.reader();
    for(int i = 0; i<fileData.length;i++){
        System.out.println(fileData[i]);
    }
    }catch(IOException e){
        System.out.println("The file specified could not be found!");
    }
        System.exit(0);
}

}

クラス 2

import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;

public class read {

private String path;

public read(String file_path){
    path = file_path;
}

public String[] reader() throws IOException{
    FileReader fR = new FileReader(path);
    BufferedReader bR = new BufferedReader(fR);

    int nOL = nOLReader();
    String[] textData = new String[nOL];
    for(int i = 0; i < nOL; i++){
        textData[i] = bR.readLine();
    }
    bR.close();
    return textData;

}

int nOLReader()throws IOException{
    FileReader fR = new FileReader(path);
    BufferedReader bR = new BufferedReader(fR);
    String cLine = bR.readLine();
    int nOL = 0;
    while(cLine != null){
        nOL++;
    }
    bR.close();

    return nOL;

}

}
4

2 に答える 2

2

わお。ファイルを読み取るためだけに、本当に多くの作業を行っています。あなたがあなたのコードに固執したいと仮定すると、私はただ指摘します:

クラス2では、

String cLine = bR.readLine();
int nOL = 0;
while(cLine != null) {
    nOL++;
}

別の行を読むことは決してないので、無限ループに陥ります。最初だけがすべてです。したがって、次のようにします。

String cLine = bR.readLine();
int nOL = 0;
while(cLine != null) {
    nOL++;
    cLine = bR.readLine();
}

PS 簡単なチュートリアルを読んで、Java での I/O の要点を理解してください。これがあなたの仕事のコードです。

于 2013-01-01T12:42:43.700 に答える
0

ファイルから 1 行だけを読み取り、読み取り値を永久ループでチェックアウトします (次の行は読み取られないため、cLine 内で null が取得されないため、ループは終了しません)。メソッド nOLReader をこれに変更します (ループに cLine = bR.readLine(); を追加しました)。

int nOLReader() throws IOException {
    FileReader fR = new FileReader(path);
    BufferedReader bR = new BufferedReader(fR);
    String cLine = bR.readLine();
    int nOL = 0;
    while (cLine != null) {
        nOL++;
        cLine = bR.readLine();
    }
    bR.close();
    return nOL;

}

于 2013-01-01T12:41:59.403 に答える