0

我做了一个非常简单的文本阅读器只是为了测试机制,但它什么也没返回,我一无所知!我在 Java 方面不是很有经验,所以这可能是一个非常简单和愚蠢的错误!这是代码:

第一类

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

哇。只是为了读取文件,您确实需要做很多工作。假设 yourelaly 想坚持你的代码,我会指出:

在第 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

您只从文件中读取一行,然后在永远循环中检查读取值(永远不会读取下一行,因此您永远不会在 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 回答